2013-10-29 70 views
0

我使用此查詢來查找數據庫中的字符串,但我得到這個錯誤特定DB:SQL Server錯誤:「附近有語法錯誤‘似乎’。」

Incorrect syntax near 'seem'.

所以我想知道原因

CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630)) 

SET NOCOUNT ON 

DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110) 

SET @TableName = '' 

SET @SearchStr2 = quotename('%NQF%0028a%' , '''') 

WHILE @TableName IS NOT NULL 
BEGIN 
    SET @ColumnName = '' 
    SET @TableName = 

    (
    SELECT min(quotename(TABLE_SCHEMA) + '.' + quotename(TABLE_NAME)) 
    FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_TYPE = 'BASE TABLE' 
     AND quotename(TABLE_SCHEMA) + '.' + quotename(TABLE_NAME) > @TableName 
     AND objectproperty(object_id(quotename(TABLE_SCHEMA) + '.' + quotename(TABLE_NAME)), 'IsMSShipped') = 0 
    ) 

    WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL) 
    BEGIN 
     SET @ColumnName = (SELECT min(quotename(COLUMN_NAME)) 
         FROM INFORMATION_SCHEMA.COLUMNS 
         WHERE TABLE_SCHEMA = parsename(@TableName, 2) 
          AND TABLE_NAME = parsename(@TableName, 1) 
          AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar') 
          AND quotename(COLUMN_NAME) > @ColumnName) 

     IF @ColumnName IS NOT NULL 
     BEGIN 
      INSERT INTO #Results 
      EXEC 
      ('SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)  
    FROM ' + @TableName + ' (NOLOCK) ' + 

    ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2 

) 

END 

END 

END 


SELECT ColumnName , ColumnValue FROM #Results**strong text** 
+2

請清楚說明您的問題。 –

回答

1

看起來像你的表名中有一個空格。檢查具有「SEEM」作爲其名稱一部分的表格,並儘可能刪除空格。如果更改表名不是一個選項,請將@TableName變量包裝成[]

+1

建議['QUOTENAME'](http://technet.microsoft.com/en-us/library/ms176114.aspx)會更好,因爲它也處理其他nasties,比如包含'''''字符。 –