Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 插入到转换和验证列中_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 插入到转换和验证列中

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

我需要检查插入中的值组合。如果不存在,那么我需要默认为无。并且只获取前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 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()。