以指定的字符格式删除字符

问题描述

我有一个字段,该字段应包含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)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...