MySQL 将 2 行合并为 1 行,有时尾随 \

MySQL CONCAT 2 rows into 1 row with trailing \ sometimes

我正在尝试 CONCAT 将 2 行合并为不同 table 中的 1 行。问题是 CONCAT 在目录和文件路径上,有时尾随“\”。我想知道使用 MySQL.

最快的方法是什么
INSERT INTO [database.tableName] (full_path) SELECT CONCAT(A.Loc_Path, '\', A.File_Path) FROM [database.tableName2] as A where ID > 0;

目前这有时会给我正确答案。问题是当 Loc_Path 有尾随 \ 时。

示例:

Loc_Path      |    File_Path
c:\test       |    yay.txt
c:\test\      |    yay.txt

这个结果是:

c:\test\yay.txt     [GOOD]
c:\test\yay.txt    [BAD]

您可以使用 case 语句来查看 Loc_Path 是否以 \ 结尾。

SELECT CASE WHEN Loc_Path LIKE '%\' 
            THEN CONCAT(A.Loc_Path, A.File_Path)
            ELSE CONCAT(A.Loc_Path, '\', A.File_Path)
            END AS Result
FROM tableName2
WHERE ID > 0

或使用 SUBSTRING 而不是 LIKE

SELECT CASE WHEN substring(Loc_Path , (char_length(Loc_Path ) - 1)) = '\' 
            THEN CONCAT(A.Loc_Path, A.File_Path)
            ELSE CONCAT(A.Loc_Path, '\', A.File_Path)
            END AS Result
FROM tableName2
WHERE ID > 0

别忘了escape your backslash