3

我如何通过以下规则在 sql 中搜索:

  1. 字段应从无或一个及多个“0”开始
  2. 字段应以某个数字结尾,例如 555

换句话说,模式应该匹配下一条记录:

'555'
'0555'
'00555'
etc

sql 可以在一个选择查询中执行此操作(无需字符串拆分或其他)吗?谢谢你。

4

3 回答 3

9

或许是这样的:

WHERE Field LIKE '%555' AND Field NOT LIKE '%[^0]%555'

在 SQL Fiddle 上试试这个。

于 2012-05-17T08:12:14.983 回答
1

可能是这样的

SELECT * FROM table where CAST(field AS int) = CAST('your input' AS int) 
于 2012-05-17T08:17:01.953 回答
0

另一种更具体的针对您的情况的替代方案(可以表示为'字符串应该是具有任意数量前导零的整数(包括“无”)')并受到@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以小数位数或比例表示。

于 2012-05-17T08:54:38.460 回答