我有一个列,其中包含拒绝某个人的原因。 该值可能是“拒绝人员”或“10/18/2012”
我正在尝试设置查询以检查该值是否为日期,然后它可以在其位置放置一个空格。否则,请保留其中的文本。
我设置的查询是:
SELECT DISTINCT person_id,
CASE description
WHEN ISDATE(description) THEN ''
END AS refuseReason
FROM person
但这会返回错误。如果日期本身保存为VARCHAR,那么我是否必须先将它们转换为日期,然后检查是否ISDATE?如果我这样做了,是否会在文本转换时转换文本?
编辑:我通过将它投射到日期时间来尝试它,并且我也一直收到错误:
SELECT DISTINCT person_id,
CASE description
WHEN ISDATE(CAST(OBSVALUE AS DATETIME)) THEN ''
END AS refuseReason
FROM person
答案 0 :(得分:2)
(假设TSQL)IsDate()返回1或0.(另外你的CASE语法不正确)
尝试:
SELECT DISTINCT person_id,
CASE
WHEN ISDATE(description) = 1 THEN ''
ELSE description
END AS refuseReason
FROM person
答案 1 :(得分:0)
ISDATE()函数返回布尔值1或0 你必须使用
制作该条款WHEN ISDATE(@variable) = 1 THEN ''
ELSE @variable