我如何通过以下规则在 sql 中搜索:
- 字段应从无或一个及多个“0”开始
- 字段应以某个数字结尾,例如 555
换句话说,模式应该匹配下一条记录:
'555'
'0555'
'00555'
etc
sql 可以在一个选择查询中执行此操作(无需字符串拆分或其他)吗?谢谢你。
我如何通过以下规则在 sql 中搜索:
换句话说,模式应该匹配下一条记录:
'555'
'0555'
'00555'
etc
sql 可以在一个选择查询中执行此操作(无需字符串拆分或其他)吗?谢谢你。
可能是这样的
SELECT * FROM table where CAST(field AS int) = CAST('your input' AS int)
另一种更具体的针对您的情况的替代方案(可以表示为'字符串应该是具有任意数量前导零的整数(包括“无”)')并受到@timus2001 的回答的启发:
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以小数位数或比例表示。