2016-03-23 12 views
2

Farklı bir tabloda 1 satırda CONCAT 2 satırı çalışıyorum. Sorun, CONCAT dizininin bir dizin üzerindedir ve bazen '\' ile devam eden bir dosya yoludur. Bunu MySQL ile yapmanın en hızlı yolunun ne olduğunu merak ediyordum.MySQL CONCAT 2 satırları sonrasındaki 1 satırın içine bazen

INSERT INTO [database.tableName] (full_path) SELECT CONCAT(A.Loc_Path, '\', A.File_Path) FROM [database.tableName2] as A where ID > 0; 

Şu anda bu bana doğru yanıtı biraz zaman veriyor. Sorun, Loc_Path'un \ numaralı izlemeye sahip olmasıdır.

Örnek:

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

Bu sonuçlar şunlardır:

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

cevap

1

Sen Loc_Path bir \ biter olmadığını görmek için bir vaka deyimi kullanabilirsiniz.

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 

Ya SUBSTRING yerine LIKE kullanarak.

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'u unutmayın.