如何解决以指定的字符格式删除字符
我有一个字段,该字段应包含6位数字,一个句点和6位数字(######。######)。我使用的应用程序允许此输入为自由格式。因为用户是用户,他们会按照自己的意愿去做,所以我有几个字段,后面带有破折号和一些字母(############-XYZ)。
如何使用T-SQL识别并随后删除-XYZ,以便可以返回数据的完整性。该列是NVARCHAR(36),PK,并且不允许空值。该列确实具有唯一的columnID字段。
解决方法
如果所需部分是前13个字符,请使用left()
:
select left(field,13)
您可以检查前13个字符是否符合您的期望:
select (case when field like '[0-9][0-9][0-9][0-9][0-9][0-9].[0-9][0-9][0-9][0-9][0-9][0-9]%'
then left(field,13)
else -- whatever you want when the field is bad
end)
,
由于它是自由格式,并且“用户就是用户”,请使用charindex
来确定1)是否有-
和2)将其删除。
示例:
DECLARE @test NVARCHAR(36) = N'######.######-XYZ'
SELECT SUBSTRING(@test,1,COALESCE(NULLIF(CHARINDEX('-',@test,1),0),LEN(@test)+1)-1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。