当我使用 FIND_IN_SET 函数时,我的 sql 有什么问题?

What's wrong with my sql when I using FIND_IN_SET function?

在我的 table 中调用的 testtb 有一个存储文件路径的列,现在我想找到从 C:\ 开始的文件。我使用 sql,但它总是return 0.what错了?

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

这是我的 table 数据:

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

你只是糊涂了。 find_in_set() 指的是 MySQL 中的值集。在 MySQL 中,这些是用逗号分隔的值:'1,2,3''abc,def,ghi'.

我认为您正在寻找 instr()position() 函数:

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

find_in_set 在这里不合适,like 会如您所愿。

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