2

您好我正在尝试在 SQL 中运行此查询,但它没有给我结果:

SELECT        COUNT(*) AS Expr1
FROM            restaurantData
WHERE        (restaurantInfo LIKE '''%' + 'xyz' + '%''') OR
                         (restaurantName LIKE '''%' + 'xyz' + '%''') OR
                         (restaurantDescription LIKE '''%' + 'xyz' + '%''')

我有值为 xyz 餐厅的 restaurantName 列

这是一些示例数据

4

2 回答 2

4

为什么会有额外的单引号?

   SELECT
            COUNT(*) AS Expr1 
    FROM  restaurantData 
    WHERE        (restaurantInfo LIKE '%Guu%') 
OR (restaurantName LIKE '%Guu%') 
    OR (restaurantDescription LIKE '%Guu%')

看起来您正在尝试动态构建它;如果是这种情况,那么我建议您发布您的构建方式。

于 2012-06-29T17:08:56.647 回答
2

当执行字符串连接时,您可以将结果与以下内容进行比较:

'%Guu%'

当您将两个单引号字符一个接一个地放在 SQL 字符串中时,它被“转义”,因此''用作'. 如果您的数据集包含引号字符,您将匹配以下内容:

restaurantInfo 
--------------
'ABCGuuDEF'
'xyzGuuamn'

我相信你反而想做:

'%''' + 'Guu' + '''%'

哪个会匹配

restaurantInfo 
--------------
Asdf'Guu'
'Guu'Asdf

或者,如果您只是在寻找没有任何引号的 Guu,就这样做

'%' + 'Guu' + '%'

哪个会匹配

restaurantInfo 
--------------
Guu
GuuAbcd
AbcdGuu
Asdf'Guu'
'Guu'Asdf
于 2012-06-29T17:09:48.613 回答