如何在SQL Server LIKE子句中使用特殊字符
我有一个表,我想在其中获得字符串,如如何在SQL Server LIKE子句中使用特殊字符,sql,sql-server,special-characters,sql-like,Sql,Sql Server,Special Characters,Sql Like,我有一个表,我想在其中获得字符串,如ab aabb aaabbb……a n次,然后是b n次,如下所示 例如表: value ---------- ab aabb aaabbb aaaabbbb 1 1a abababa 我希望结果表为: value ---------- ab aabb aaabbb aaaabbbb 我试过这样做 select * from [NumTest] where value LIKE '[a]+[b]
ab aabb aaabbb……
a n次,然后是b n次,如下所示
例如表:
value
----------
ab
aabb
aaabbb
aaaabbbb
1
1a
abababa
我希望结果表为:
value
----------
ab
aabb
aaabbb
aaaabbbb
我试过这样做
select * from [NumTest] where value LIKE '[a]+[b]+'
但它返回零行
有谁能帮助我如何在SQL Server的
中使用特殊字符,如?以下是一些可以使用的方法:
(编辑-在O/p注释之后,不需要注释的零件)
在CTE中,选择左半部分全部a
-s和右半部分全部b
-s的值。然后找到最大长度,用它来复制前面需要的空白
(编辑后)您所请求的内容被写为,如“%ab%”
,但这对您没有多大好处,因为它将返回abababa
。如果您想要精确的输出,您已经显示出需要很多不同的逻辑。检查我的答案这是得到的结果好,但它看起来很复杂,我。我不需要任何前导空格,只是我的question@ILLUMINATI7590啊,在这种情况下,您可以使用内部选择从CTE
--WITH CTE_GoodValues AS
--(
SELECT value
FROM Table1
WHERE LEFT(VALUE,LEN(VALUE)/2) = REPLICATE('a',LEN(VALUE)/2)
AND RIGHT(VALUE,LEN(VALUE)/2) = REPLICATE('b',LEN(VALUE)/2)
AND LEN(VALUE)%2=0
--)
--SELECT REPLICATE(' ', (SELECT MAX(LEN(VALUE))/2 FROM CTE_GoodValues)- LEN(VALUE)/2) + VALUE
--FROM CTE_GoodValues