包含斜杠的 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 查询字符串的主要内容,如果未能解决你的问题,请参考以下文章
使用 Visual Studio 2012 和 SQL Server Management Studio 2012 运行 SQL Server CE 4 查询