Sql server 用例语句和QUOTENAME一起使用
我在使用SQL Server时面临一个SQL查询问题 我有一个类似这样的问题Sql server 用例语句和QUOTENAME一起使用,sql-server,sql-server-2008,sql-server-2012,case,Sql Server,Sql Server 2008,Sql Server 2012,Case,我在使用SQL Server时面临一个SQL查询问题 我有一个类似这样的问题 SELECT QUOTENAME(A, '"'), QUOTENAME(B, '"'), QUOTENAME(C, '"') FROM TABLENAME 现在,我必须用一个案例陈述来代替这个 现在这个查询工作了- SELECT A, CASE WHEN B='Thank you' then 'TY' WHEN B='No Problem' then 'NP' WHEN B='As soon as possib
SELECT QUOTENAME(A, '"'),
QUOTENAME(B, '"'),
QUOTENAME(C, '"')
FROM TABLENAME
现在,我必须用一个案例陈述来代替这个
现在这个查询工作了-
SELECT A,
CASE
WHEN B='Thank you' then 'TY'
WHEN B='No Problem' then 'NP'
WHEN B='As soon as possible' then 'ASAP'
END AS B,
C
FROM TABLENAME
现在我使用QUOTENAME,因为我想用双引号将字段括起来。任何可能的情况下,我如何混合QUOTENAME和CASE语句。到目前为止,无论我尝试了什么,都会抛出一个语法错误。应该就是这样工作的
SELECT A,
CASE
WHEN B='Thank you' then QUOTENAME('TY', '"')
WHEN B='No Problem' then QUOTENAME('NP', '"')
WHEN B='As soon as possible' then QUOTENAME('ASAP', '"')
END AS B,
C
FROM TABLENAME
或者更短
SELECT A,
QUOTENAME( CASE
WHEN B='Thank you' then 'TY'
WHEN B='No Problem' then 'NP'
WHEN B='As soon as possible' then 'ASAP'
END, '"') AS B,
C
FROM TABLENAME
与GuidoG解决方案相比,这可能也要短一点:
SELECT A
, QUOTENAME(CASE B
WHEN 'Thank you' THEN 'TY'
WHEN 'No Problem' THEN 'NP'
WHEN 'As soon as possible' THEN 'ASAP'
END, '"') AS B
, C
FROM TABLENAME;
如果你总是比较一个列是否相等,你可以只写
CASE column\u NAME
,然后做这样的比较:WHEN 1,然后'LOL1',WHEN 2,然后'LOL2',
等等。只要使用选择QUOTENAME(CASE WHEN…..WHEN…..END,“)作为B
谢谢@GuidoG。它工作得很好!现在当我看到你的查询时,我能理解我做错了什么。有时我真是太傻了。