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
我正在尝试 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