sql - 通配符 % 不能按预期工作
问题描述
我在 SQL Server 表的列中有一个字符串:
30,36,40,41,42,52,62,63,66,67,76
如您所见,这个字符串有数字 62 和数字 66。
我正在使用这个正则表达式来匹配这个字符串:
%62%76%
但它不匹配这个字符串。
我如何需要更改此正则表达式以匹配提到的字符串?
SQL代码部分:
WHERE
(SELECT STUFF((SELECT ',' + CONVERT(NVARCHAR(MAX), TagID)
FROM ItemTag
WHERE ItemID = nt.ItemID
FOR XML PATH('')), 1, 1, '') AS tags) LIKE '%62%76%'
很奇怪,但是当我使用时%30%52%
,它匹配字符串,但是当我使用时%30%62%
,没有匹配。
解决方案
您需要指定以确保 TagID 值根据表达式ORDER BY TagID
的需要进行排序:LIKE
WHERE (SELECT STUFF(
(
SELECT ',' + CONVERT(NVARCHAR(MAX), TagID)
FROM ItemTag
WHERE ItemID = nt.ItemID
ORDER BY TagID
FOR XML PATH('')
), 1, 1, '') as tags
) LIKE '%62%76%'
推荐阅读
- c - fput 的问题
- language-agnostic - 多个消费者是否可以在 Pulsar 主题上使用相同的消息?
- node.js - Exceljs 包未检索某些单元格值
- python - 直方图上的瑞利分布曲线
- python - 在自定义数据集上训练 Spacy NER 出现错误
- macos - 虚拟 NSS 屏幕
- angular-material - 在 mat-table 单元格内插入换行符或替换文本中的 html 标签
- oracle-apex - Oracle Apex:使用 SQL 设置页面项 - 不添加到会话
- lucene - 如何排除集合中具有(或不具有)特定值的结果?
- mysql - MySQL SELECT JOIN LIMIT row Comment per Post 和 LIMIT row Post per User