我在表1上有两列(A和B),并且只在B的开头不是A的情况下才想将它们连接到另一列(C),如果不是这样,只需将B复制到C。 这里的关键点是A和B没有固定的长度,所以我认为我不能使用left(),因为它需要特定的长度。 例如:
ID A B
1 5 48721
2 98 98555
3 98 136
4 841 8417740313
5 841 133889
在这种情况下,C列应包括:
我正在尝试:
UPDATE 1
SET C = B
WHERE LEFT (B) = A
UPDATE 1
SET C = concat(A,B)
WHERE LEFT(B) <> A
但是它不起作用,因为我需要给left()一个固定的长度。你们会做什么?
答案 0 :(得分:5)
您似乎想要这样的东西:
UPDATE t
SET C = (CASE WHEN B LIKE A || '%' THEN B ELSE A || B END);
也就是说,您可以使用LIKE
进行比较。
答案 1 :(得分:0)
第一步:
update table
set col_c = col_a||substr(col_b,length(col_a))
where
substr(col_b,1,length(col_a))=col_a;
第二步:
update table
set col_c = col_a||col_b
where
substr(col_b,1,length(col_a))<>col_a;
您可以尝试一下,让我们知道, 较早给出的解决方案也是正确的;但是如果在col_b的中间而不是在开始处出现了相同的示例,例如col_a中的98呢?