如何检查数字列值是升序还是降序。例如。 12345 或 654321
How to check if a numeric column value is in ascending or descending order. eg. 12345 or 654321
我需要有关 SQL 查询的帮助,以检查数字列是否包含按升序或降序排列的数字。
例如。 123456 或 654321
这是为了避免人们在客户 phone 号码栏中输入一些随机值,用户需要提供有效的 phone 号码输入。
我想在不使用函数的情况下实现。
更新:@LukStorms 友善地回答了我的问题。非常感谢。
感谢其他看过我的问题并发表评论的人。但是,如果评论有助于解决问题,我将不胜感激。我的场景不同,我无法在此处 post 整个用例。问题是我必须以相同的方式验证该列。
检查它是否像一个数字序列?
然后你可以简单地使用 LIKE
select num
, cast(case
when '1234567890123456789' like concat('%',num,'%')
then 1
when '9876543210987654321' like concat('%',num,'%')
then 1
else 0 end as bit) as isSequence
from (values
(123456),
(765432),
(797204)
) nums(num)
num
isSequence
123456
True
765432
True
797204
False
或使用CHARINDEX
select num
, cast(case
when 0 < charindex(concat(num,''),'1234567890123456789') then 1
when 0 < charindex(concat(num,''),'9876543210987654321') then 1
else 0 end as bit) as isSequence
from (values
(123456),
(765432),
(797204)
) nums(num)
演示 db<>fiddle here
我需要有关 SQL 查询的帮助,以检查数字列是否包含按升序或降序排列的数字。
例如。 123456 或 654321
这是为了避免人们在客户 phone 号码栏中输入一些随机值,用户需要提供有效的 phone 号码输入。
我想在不使用函数的情况下实现。
更新:@LukStorms 友善地回答了我的问题。非常感谢。
感谢其他看过我的问题并发表评论的人。但是,如果评论有助于解决问题,我将不胜感激。我的场景不同,我无法在此处 post 整个用例。问题是我必须以相同的方式验证该列。
检查它是否像一个数字序列?
然后你可以简单地使用 LIKE
select num , cast(case when '1234567890123456789' like concat('%',num,'%') then 1 when '9876543210987654321' like concat('%',num,'%') then 1 else 0 end as bit) as isSequence from (values (123456), (765432), (797204) ) nums(num)
num | isSequence |
---|---|
123456 | True |
765432 | True |
797204 | False |
或使用CHARINDEX
select num , cast(case when 0 < charindex(concat(num,''),'1234567890123456789') then 1 when 0 < charindex(concat(num,''),'9876543210987654321') then 1 else 0 end as bit) as isSequence from (values (123456), (765432), (797204) ) nums(num)
演示 db<>fiddle here