如何检查数字列值是升序还是降序。例如。 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