Sql 博士后。连接没有固定长度的字段

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

表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列应包括:

  • 对于ID=1:548721
  • 对于ID=2:98555
  • 对于ID=3:98136
  • 对于ID=4:8417740313
  • 对于ID=5:841133889
  • 我试着:

    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的中间,而不是在开始时?

    列的数据类型?