微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果至少存在字符,如何将状态更新为错误的数字?

如何解决如果至少存在字符,如何将状态更新为错误的数字?

我在sql Server 2012上工作,但有一个问题,只有当整个字段的数字都从0到9时,我才能将状态更新为Numbers。 但是如果它只有一个字符或精度,那么它将无效。

1222有效

223g无效

create table #acceptnumbersOnly
(
keyvalue nvarchar(50),Status nvarchar(50)
)
insert into #acceptnumbersOnly(keyvalue)
values 
('233'),('g25k'),('25k'),('gkg'),('145'),('45.5')

预期结果将是:

keyvalue    Status
233         Numbers only 
g25k        Not Valid Numbers Only
25k         Not Valid Numbers Only
gkg         Not Valid Numbers Only
145         Numbers only 
45.5        Not Valid Numbers Only

解决方法

类似这样的东西

update #acceptnumbersOnly
set
  [Status]=iif(KeyValue LIKE '%[^0-9]%','Not Valid Numbers Only','Numbers only');

结果

KeyValue    Status
233         Numbers only
g25k        Not Valid Numbers Only
25k         Not Valid Numbers Only
gkg         Not Valid Numbers Only
145         Numbers only
45.5        Not Valid Numbers Only
,

我从凯斯(Case)成长...当逻辑时。这对我有用。

SELECT KeyValue,CASE
    WHEN KeyValue LIKE '%[^0-9]%' THEN 'Not Valid Numbers Only'
    ELSE 'Numbers only'
END AS Status
FROM #acceptnumbersOnly

enter image description here

我一直认为IIF用于MS Access。我现在才发现有关IIF函数的信息。显然,IIF是在SQL Server 2012+中引入的。我认为Case ... When是一个更好的解决方案,因为它可以跨所有版本的SQL Server移植。也许这是有争议的,因为使用2012年前的SQL Server的人可能并不多。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。