MySQL CONCAT 2行为1行,有时为尾随\

时间:2016-03-23 15:16:11

标签: mysql concatenation concat

我正在尝试将CONCAT 2行放入另一个表中的1行。问题是CONCAT位于目录和文件路径上,有时会跟踪' \#39;。我想知道用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]

1 个答案:

答案 0 :(得分:1)

您可以使用案例陈述来查看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