데이터베이스의 모든 사용자가 만든 테이블에서 검색 문자열을 검색하는 저장 프로 시저를 만들려고합니다.SQL 2012 - Datetime을위한 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
나는 변환 오류가 발생합니다. 세 가지 유형의 데이터 문자열, 숫자 및 날짜를 모두 사용하려면이 저장 프로 시저가 필요합니다.
Conversion failed when converting date and/or time from character string.
는
내 대답에 댓글을 써야합니다. 올바른 답변을 본 사람들은 이것을보고 (이 answereR을 삭제하십시오) –