仅在需要时从SQL查询结果返回引用的数据

时间:2015-04-10 23:56:21

标签: sql postgresql

例如,我有简单的SQL:

select product.name from products;

在我的桌子上我有2个产品:轮子,方向盘。

所以我的结果是:

wheel
steering wheel

如果结果超过1个字,如何获得引用结果?:

wheel
"steering wheel"

我尝试使用quote_literal函数,但遗憾的是结果总是被引用。 quote_literal就像我只需要常量字符串一样:quoted_literal('steering wheel') / quoted_literal('wheel')

3 个答案:

答案 0 :(得分:1)

怎么样:

SELECT CASE WHEN (product.name LIKE '% %')
THEN quoted_ident(product.name) ELSE product.name END
FROM products;

答案 1 :(得分:0)

使用它:

SELECT name FROM products WHERE position(' ' in name)= 0
union
SELECT '"'|| name ||'"' FROM products WHERE position(' ' in name)<>0

这是sqlfiddle

答案 2 :(得分:0)

select  product.NAME,array_length(string_to_array(product.NAME,' '),1) words_cnt -- will return number of words in product.name
from product

并使用以下选择来获得所需的输出

SELECT CASE 
        WHEN array_length(string_to_array(product.NAME, ' '), 1) > 1
            THEN format('''%s''', product.NAME)
        ELSE product.NAME
        END
FROM product