2016-03-23 7 views
2

CONCAT私は別のテーブルで2行1列にしようとしています。問題は、CONCATがディレクトリ上にあり、時には末尾に '\'というファイルパスがあることです。私はMySQLでこれを行う最速の方法が何か不思議でした。MySQLのCONCAT 2行が1行に後続する場合があります

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

あなたはLoc_Path\で終わるかどうかを確認するためにcase文を使用することができます。

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を忘れないでください。

関連する問題