SQL查询给出了错误的语法错误

时间:2011-01-03 21:35:13

标签: sql sql-server

Select COUNT(*) as 'Number'
From image
WHERE (image.current_phase = 'aggregation' AND (image.raw_filename REGEXP '%gordonpho%back%$'))

上面的SQL查询给出了错误的语法错误。我想从表image中获取列image.current_phase具有聚合作为文本的行数。列image.raw_filename也以'%gordonpho%back%'结尾。

有人能在我的陈述中看到语法错误吗?

3 个答案:

答案 0 :(得分:1)

REGEXP在T-SQL中无效,但无论如何你都不需要它,因为你的“正则表达式”无论如何都会使用LIKE

Select COUNT(*) as 'Number'
From image
WHERE (image.current_phase = 'aggregation'
       AND (image.raw_filename LIKE '%gordonpho%back%')

答案 1 :(得分:0)

SQL Server本身不支持正则表达式。尝试使用LIKE:

Select COUNT(*) as 'Number'
From image
WHERE (image.current_phase = 'aggregation' 
    AND (image.raw_filename LIKE '%gordonpho%back%'))

对于您真正需要/想要使用正则表达式的时间,您必须通过SQLCLR支持(.NET代码)来完成。

答案 2 :(得分:-1)

在您的SQL实现中,image可能是保留字。尝试用反引号(MySQL),方括号[](MSSQL)或双引号"(大多数其他)引用它。

此外,%中的'%gordonpho%back%$' s在正则表达式中不被视为通配符。尝试用以下文字替换文字:

'.*gordonpho.*back.*$'