在 SQL 查询的列中添加单引号

新手上路,请多包涵

所以我目前有以下SQL:

 SELECT opportunities.ref FROM opportunities GROUP BY opportunities.ref

它返回以下结果:

 OP10
OP252
OP52905
OP42

我正在努力实现以下目标:

 'OP10'
'OP252'
'OP52905'
'OP42'

我尝试了以下方法:

 SELECT opportunities.ref FROM opportunities
CASE WHEN opportunities.ref IS NOT NULL THEN "'"+opportunitiesref+"'"
GROUP BY opportunities.ref

但这不起作用。

我不想更新该列,也不想像这样使用任何 @declare 函数。我目前正在使用 SQL Server 2008。我不知道该怎么做。帮助?

原文由 Sammy Sung 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 536
2 个回答

如果您使用的是 SQL SERVER,请根据以下内容修改您的查询:

 SELECT opportunities.ref FROM opportunities
CASE WHEN opportunities.ref IS NOT NULL THEN ''''+opportunitiesref+''''
GROUP BY opportunities.ref

原文由 Gaurav Rajput 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果 ref 列是整数,则可以使用

SELECT CASE
           WHEN opportunities.ref IS NOT NULL
           THEN '''' + CONVERT(VARCHAR(MAX), ref) + ''''
       END
FROM opportunities
GROUP BY opportunities.ref;

如果您需要用逗号分隔的单个字符串中的整个转换列

DECLARE @listStr VARCHAR(MAX)= '';
DECLARE @result VARCHAR(MAX);
IF EXISTS
(
    SELECT 1
    FROM opportunities
)
    BEGIN
        SELECT @listStr = @listStr + tbl_opportunities.ref + ','
        FROM
        (
            SELECT '''' + CONVERT(VARCHAR(MAX), ref) + '''' AS MarketSeq
            FROM opportunities
        ) tbl_opportunities;
        SELECT @result = SUBSTRING(@listStr, 1, LEN(@listStr) - 1);
END;
    ELSE
    BEGIN
        SET @result = '';
END;
SELECT @result;

原文由 Samrat Sarang 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进