包含斜杠的 SQL Server 2012 查询字符串

Posted

技术标签:

【中文标题】包含斜杠的 SQL Server 2012 查询字符串【英文标题】:SQL Server 2012 query string containing slash 【发布时间】:2015-05-19 23:54:16 【问题描述】:

我已经在整个互联网和 *** 上寻找这个问题的答案,但似乎找不到任何可以回答它的东西,所以这里......

是否需要对正斜杠 (/) 进行任何特殊处理才能将其包含在搜索查询中?

场景:我有一个包含正在搜索的字符串的查询,其中包含正斜杠。搜索词是特定项目的维度,因此它必须包含斜线以表示分数。我试过用反斜杠转义它,但这不起作用。查询如下:

SELECT * FROM ITEMDATA WHERE CONTAINS(dimensions, '3/8')

此查询返回 0 个结果。

要搜索的数据示例:

•间距:3/8" •轨距:0.050

我还需要在搜索短语中使用双引号来指定单位,但这是另一个问题。

有什么建议吗?

【问题讨论】:

恐怕SQL server全文只有索引字母。不确定 2012 年是否改变了这一点。 【参考方案1】:

如下所示,您可以在LIKE 表达式中使用“/”而无需任何技巧:

create table foo(a int, b varchar(32))
go

insert into foo select 1, 'for 3/8 inch';
go

select * from foo where b like '%3/8%';
go

这将导致找到单行。

【讨论】:

【参考方案2】:

如果我们需要在sql表的列中搜索特定的字符串,我们需要使用LIKE命令,这样我们就可以以各种方式使用它。 1. 返回具有维度列值的结果包含字符串 3/8

'SELECT * FROM ITEMDATA WHERE dimensions LIKE '%3/8%';`
    返回具有维度列值的结果严格以字符串 3/8 开头

SELECT * FROM ITEMDATA WHERE dimensions LIKE '3/8%';

    返回维度列值严格以字符串 3/8 结尾的结果。

SELECT * FROM ITEMDATA WHERE dimensions LIKE '3/8%';

【讨论】:

【参考方案3】:

对全文禁用 STOPLIST:

ALTER FULLTEXT INDEX ON table SET STOPLIST OFF

试试

SELECT * FROM ITEMDATA WHERE CONTAINS (dimensions, '"3/8*"')

【讨论】:

以上是关于包含斜杠的 SQL Server 2012 查询字符串的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2012 - 使用积压和结转运行总计

SQL Server 查询元素值的 xml 属性

立即更新全文搜索索引 - SQL SERVER 2012

SQL Server 报告服务查询

sql server查询性能where子句

使用 Visual Studio 2012 和 SQL Server Management Studio 2012 运行 SQL Server CE 4 查询