2016-04-11 10 views
1

In meiner Tabelle namens testtb hat eine Spalte, die Dateipfad speichern, Jetzt möchte ich das Feld, das in C:\ starten. Ich benutze die sql, aber es immer zurück 0 Was ist falsch?Was ist falsch mit meinem SQL, wenn ich FIND_IN_SET Funktion verwende?

--example 
select FIND_IN_SET('C:\\', 'C:\\abc.png') 
-- my sql 
select FIND_IN_SET('C:\\', filepath) from testtb; 

Hier ist meine Tabellendaten:

id, filepath,    srcfilepath 
'1', 'C:\20160101\abc.jpg', 'C:\20160101\abc.jpg' 
'2', 'D:\20160101\abc.jpg', 'D:\20160101\abc.jpg' 
'3', 'E:\TP\20160101\abc.jpg', 'E:\TP\20160101\abc.jpg' 

Antwort

2

Dieses für einen Kommentar ist zu lang.

Sie sind nur verwirrt. find_in_set() bezieht sich auf Werte in MySQL. In MySQL sind dies Werte, die durch Kommata getrennt sind: '1,2,3' oder 'abc,def,ghi'.

Ich glaube, Sie suchen die instr() oder position() Funktion:

select instr('C:\\abc.png', 'C:\\') 
1

find_in_set hier nicht richtig ist, und like wird tun, was Sie erwarten.

mysql> select 'C:\\abc.png' LIKE 'C:\\\\%'; 
+------------------------------+ 
| 'C:\\abc.png' LIKE 'C:\\\\%' | 
+------------------------------+ 
|       1 | 
+------------------------------+ 
1 row in set (0.00 sec)