Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. CREATE PROC SearchAllTables
  2. @SearchStr nvarchar(100)
  3. AS
  4. ....
  5. SET @SearchStr2 = CASE WHEN ISDATE(@SearchStr)=0
  6. THEN QUOTENAME('%' + @SearchStr + '%','''')
  7. ELSE @SearchStr END
  8. ....
  9.  
  10.  
  11. --Here's where the comparison is made. This comparison works for string and numeric types but not datetime
  12. DECLARE @sql nvarchar(max)
  13.  
  14. IF ISDATE(@SearchStr) = 0
  15. BEGIN
  16. SET @sql = 'INSERT INTO #Results SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)
  17. FROM ' + @TableName + ' (NOLOCK) ' +
  18. ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
  19. END
  20. ELSE IF ISDATE(@SearchStr) = 1
  21. BEGIN
  22. SET @sql = 'INSERT INTO #Results SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)
  23. FROM ' + @TableName + ' (NOLOCK) ' +
  24. ' WHERE DATEDIFF(day, CONVERT(datetime, '+ @ColumnName + ', 103), ' + @SearchStr+ ') = 0'
  25. END
  26.  
  27. PRINT @sql
  28. EXEC sp_ExecuteSQL @sql
  29. GO
  30.  
  31. Conversion failed when converting date and/or time from character string.
  32.  
  33. declare @SearchStr datetime
  34. set @SearchStr = convert(datetime, '2012-09-10', 103) –- dd/mm/yyyy
  35.  
  36. 'WHERE Datediff(day, CONVERT(datetime, '+ @ColumnName + ', 103), ' + @SearchStr+') = 0'
  37.  
  38. SET @SearchStr2 = CASE WHEN ISDATE(@SearchStr)=1
  39. THEN CONVERT(datetime,@SearchStr,103)
  40. ELSE QUOTENAME('%' + @SearchStr + '%','''') END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement