如何通过此规则在sql中搜索:
换句话说,模式应匹配下一个记录:
'555'
'0555'
'00555'
etc
sql可以在一个选择查询中执行此操作(不进行字符串拆分或其他操作)吗? 谢谢。
答案 0 :(得分:9)
答案 1 :(得分:1)
可能是这样的
SELECT * FROM table where CAST(field AS int) = CAST('your input' AS int)
答案 2 :(得分:0)
一种替代方案,更具体针对您的情况(可以表示为'字符串应该是一个具有任意数量的前导零(包括“无”)'的整数)并受{的启发{3}}:
WHERE
CASE
WHEN Field NOT LIKE '%[^0-9]%' AND LEN(Field) <= 38
THEN CAST(CAST(Field AS decimal(38, 0)) AS varchar(38))
ELSE Field
END = '555'
如果值太长而无法转换为最长的 1 可能的数字类型,则需要进行长度测试。您可以使用LEN(Field) = 3
条件而不是LEN(Field) <= 38
,但如果'555'
要求更改为不同长度,则必须记住更改该部分。事实上,如果/在必要时你只需要替换'555'
字符串(并记住它永远不会超过38个字符)。
1 就小数位数而言,或 scale 。