MS SQL模式之类的

时间:2012-05-17 08:01:11

标签: sql sql-server

如何通过此规则在sql中搜索:

  1. 字段应从no或一个或多个'0'
  2. 开始
  3. 字段应该结束一些数字,例如555
  4. 换句话说,模式应匹配下一个记录:

    '555'
    '0555'
    '00555'
    etc
    

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

3 个答案:

答案 0 :(得分:9)

也许是这样:

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

试试这个on SQL Fiddle

答案 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