Sql 插入到转换和验证列中
我需要检查插入中的值组合。如果不存在,那么我需要默认为无。并且只获取前6个字符。我如何格式化它的语法?Sql Server 2008r 伪代码Sql 插入到转换和验证列中,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要检查插入中的值组合。如果不存在,那么我需要默认为无。并且只获取前6个字符。我如何格式化它的语法?Sql Server 2008r 伪代码 Insert Into Changes Release Information Select length(6, release info) If Employer or EMPLYR, use EMPLYR If Family, use OFAM If FATHER use FATHER If Friend, use OTHER If Guardia
Insert Into Changes
Release Information
Select
length(6, release info)
If Employer or EMPLYR, use EMPLYR
If Family, use OFAM
If FATHER use FATHER
If Friend, use OTHER
If Guardian or GUARDN, use GUARDN
If MOTHER, use MOTHER
If NONE, use NONE
If OFAM use OFAM
If OTHER, use OTHER
If PARENT OR Parents, use PARENT
If RESTR, use RESTR
If Sister, use OFAM
If Spouse, use Spouse
Else If not Valid (none of the above), use None
If Null use NROF
From Contacts
这里可能只需要一个冗长的
案例
表达式:
SELECT
CASE WHEN LEFT([release info], 6) IN ('Employer', 'EMPLYR') THEN 'EMPLYR'
WHEN LEFT([release info], 6) IN ('Family', 'Sister', 'OFAM') THEN 'OFAM'
WHEN LEFT([release info], 6) = 'FATHER' THEN 'FATHER'
WHEN LEFT([release info], 6) IN ('Friend', 'OTHER') THEN 'OTHER'
WHEN LEFT([release info], 6) IN ('Guardian', 'GUARDN') THEN 'GUARDN'
WHEN LEFT([release info], 6) = 'MOTHER' THEN 'MOTHER'
WHEN LEFT([release info], 6) IN ('PARENT', 'Parents') THEN 'PARENT'
WHEN LEFT([release info], 6) = 'RESTR' THEN 'RESTR'
WHEN LEFT([release info], 6) = 'Spouse' THEN 'Spouse'
WHEN [release info] IS NULL THEN 'NROF'
ELSE 'NONE' END AS relationship
FROM Contacts;
注意:要映射的两个值,
雇主
和监护人
,实际上长度超过6个字符。我不知道这是否是一个输入错误,但在任何情况下,上述逻辑都会在这两种情况下失败,因为我的case
表达式只捕获最左边的6个字符。要解决这个问题,我们可以匹配前6个字符,或者使用更长的子字符串。您应该查看大小写表达式。然后看左边。好的,但请记住,你要映射的两个密钥(雇主和监护人)实际上有八个字符长。我倾向于使用当[release info]为空时,那么“NROF”
而不是当左边([release info],6)为空时,那么“NROF”
。使用Left()。