当我使用 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)
在我的 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)