连接3个不同的字符串,然后将结果字符串存储在列中

时间:2018-07-11 22:13:37

标签: sql oracle concatenation

因此,就像我的问题说的那样,我试图将三个字符串合并为一个字符串,并在它们之间用“'”分隔,然后将结果字符串存储到另一列中(不止一种情况,所以也许我也需要循环吗?)

这就是我所拥有的:

select 'insertGeneric(''' ||b.DESCRIPTION, b.name, get_json_v(a.value, 'svgName') SYMBOL from cat_entity b 
left join CAT_ENTITY_ATTRIBUTE a on b.id = a.id_cat_entity and a.NAME = 'styleOsp'
where b.name like 'LOC.PHYSICAL.IP.%';


insertGeneric('Cabinet', 'LOC.PHYSICAL.IP.236','CABINETA');

尝试将它们放在一起,第三个也是从字符串中删除“ .svg”,然后基本上将它们存储在找到“ LOC.PHYSICAL.IP。%”的地方。

get_json_v是我项目中的一个函数,为我提供了带有文件名的字符串。 我尝试使用CONCAT()函数,但无法正常工作。 一位朋友建议我先用excell进行连接,然后再导入,但是我不知道该怎么做,所以我更喜欢 使用SQL。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

不确定我是否遵循您的所有问题,但是您可以使用已经准备好使用的连接运算符将所有值和单引号连接起来:

select 'insertGeneric(''' ||b.DESCRIPTION ||''','''|| b.name ||''','''||
  get_json_v(a.value, 'svgName') || ''')' SYMBOL 
from cat_entity b 
left join CAT_ENTITY_ATTRIBUTE a on b.id = a.id_cat_entity and a.NAME = 'styleOsp'
where b.name like 'LOC.PHYSICAL.IP.%';

因此,在用逗号分隔列的地方,您改为用||''','''||分隔值。

您可能会发现它稍微清晰一些:

select 'insertGeneric('
  || '''' || b.DESCRIPTION || ''''
  || ','
  || '''' || b.name || ''''
  || ','
  || '''' || get_json_v(a.value, 'svgName') || ''''
  || ')'
  as SYMBOL
from cat_entity b 
left join CAT_ENTITY_ATTRIBUTE a
on b.id = a.id_cat_entity and a.NAME = 'styleOsp'
where b.name like 'LOC.PHYSICAL.IP.%';

这将使您得到一个字符串,其中包含一个已显示的语句,但尚不清楚您将如何处理它-也许您正在构建一个匿名语句块以动态运行。