我使用SQL Server的contains命令搜索名为text(nvarchar(max))
的列,查询返回一行,其中文本值没有以“06”开头的单词,而单词中间有“06”。它是怎么来的?查询如下
select * from NCaseWildSearch where Contains(TEXT, '"06*" or "06"')
值是这样的
<_C153_>1067</_C153_><_C154_>100010</_C154_><_C156_>5</_C156_><_C157_>INV-20210617-120</_C157_><_C162_>Jun 17 2021 2:46PM</_C162_><_C165_>Jul 26 2021 1:21PM</_C165_>
我没有看到任何以“06”开头的单词,有20210617,但“06”定位在中间;确实有一个以Jun开头的单词,contains命令是否将其识别为“06”?真的不知道。谁能给我一些小费?谢谢
1条答案
按热度按时间e0bqpujr1#
像搜索文本一样搜索XML并不总是您想要的。因为(例如)您也在搜索节点名称。
更好的方法可能是首先选择节点值:
输出:
|A |B|
| ------------ | ------------ |
|<C153>1067</C153>|1067|
|<C157>发票-20210617-120</C157>|发票-2021617-120|
注:这可能比直接搜索较大文本中的文本慢。
参见:DBFIDDLE