我試圖創建一個存儲過程,將搜索所有用戶創建的數據庫表中的搜索字符串。SQL 2012 - SearchAllTables爲日期時間存儲過程
我發現這個存儲過程,我想開始和建立。
http://vyaskn.tripod.com/search_all_columns_in_all_tables.htm
唯一的問題是進入了一個日期時間到搜索將始終返回什麼。
我該如何修改它來搜索日期呢?
行的興趣:
CREATE PROC SearchAllTables
@SearchStr nvarchar(100)
AS
....
SET @SearchStr2 = CASE WHEN ISDATE(@SearchStr)=0
THEN QUOTENAME('%' + @SearchStr + '%','''')
ELSE @SearchStr END
....
--Here's where the comparison is made. This comparison works for string and numeric types but not datetime
DECLARE @sql nvarchar(max)
IF ISDATE(@SearchStr) = 0
BEGIN
SET @sql = 'INSERT INTO #Results SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)
FROM ' + @TableName + ' (NOLOCK) ' +
' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
END
ELSE IF ISDATE(@SearchStr) = 1
BEGIN
SET @sql = 'INSERT INTO #Results SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)
FROM ' + @TableName + ' (NOLOCK) ' +
' WHERE DATEDIFF(day, CONVERT(datetime, '+ @ColumnName + ', 103), ' + @SearchStr+ ') = 0'
END
PRINT @sql
EXEC sp_ExecuteSQL @sql
GO
我得到一個轉換錯誤。我需要這個存儲過程處理所有3種類型的數據字符串,數字和日期。
Conversion failed when converting date and/or time from character string.
謝謝
你應該在我的回答中對此進行評論,所以看到答案被打勾爲正確的人可以看到(並刪除此答案) –