在声明中拾取空格

时间:2016-03-11 15:26:59

标签: sql case-statement

我有一个名为datatype的字段,我正在尝试过滤。如果该值等于LOINC,那么我想要一个1,如果它不等于LOINC那么我想要一个零。我遇到的挑战是,有时LOINC这个词在它的末尾有一个额外的空间。由于我正在进行此检查以评估文件的有效性,如果有单词LOINC然后是空格,我需要它来输出错误。
当我尝试将其写为

when Datatype = 'LOINC' then 1 else 0 end as Test1

对于LOINC在其末尾有额外空格且LOINC没有空格的情况,它返回了1。 LOINC是我所看到的众多价值中的一个,我可以通过添加不同的验证过程来解决这个问题,但如果我能避免它,我宁愿不这样做。

2 个答案:

答案 0 :(得分:0)

标准SQL忽略尾随空白以进行比较。在大多数情况下,您只需切换到iframe(不会忽略尾随空白):

LIKE

答案 1 :(得分:0)

RTRIM(str) - RTRIM删除字符串末尾的所有空格。 选择TRIM('上帝');输出将='上帝' TRIM - 它删除LEADING,TRAILING或BOTH白色空格。 在您的情况下,查询应该是

when RTRIM(Datatype) = 'LOINC' then 1 else 0 end as Test1

但我建议修剪,因为它将从前导和尾随

中删除空格
when TRIM(Datatype) = 'LOINC' then 1 else 0 end as Test1