Sql 博士后。连接没有固定长度的字段
表1中有两列(A和B),我只想在B的开头不是A的情况下将它们连接到另一列(C),如果不是这样,只需将B复制到C中即可。 这里的关键点是A和B没有固定的长度,因此我认为我不能使用left(),因为它需要特定的长度。 例如:Sql 博士后。连接没有固定长度的字段,sql,postgresql,Sql,Postgresql,表1中有两列(A和B),我只想在B的开头不是A的情况下将它们连接到另一列(C),如果不是这样,只需将B复制到C中即可。 这里的关键点是A和B没有固定的长度,因此我认为我不能使用left(),因为它需要特定的长度。 例如: ID A B 1 5 48721 2 98 98555 3
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
更新1
设置C=B
左(B)=A
更新1
C组=混凝土(A、B)
左(B)A
但它不起作用,因为我需要给left()一个固定的长度。你们会怎么做?你们似乎想要这样的东西:
UPDATE t
SET C = (CASE WHEN B LIKE A || '%' THEN B ELSE A || B END);
也就是说,您可以使用LIKE
进行比较。步骤1:
update table
set col_c = col_a||substr(col_b,length(col_a))
where
substr(col_b,1,length(col_a))=col_a;
步骤2:
update table
set col_c = col_a||col_b
where
substr(col_b,1,length(col_a))<>col_a;
更新表
设置列c=列a | |列b
哪里
substr(col_b,1,length(col_a))col_a;
你可以试试这个让我们知道,
前面给出的解也是正确的;但是如果CelyA中的EG:98存在于CyrB B的中间,而不是在开始时?列的数据类型?