今天工作的时候遇到一个功能需求,就是数据库中保存有一个字符串字段,用分号隔开的多个字符串,现在要传入一个参数,这个参数也是用分隔符分开的多个字符串,要判断数据库中的字段中分号分割的任意一个字符串是否在传入的参数分隔符分开的任意字符串中存在,举个栗:
数据库存入的字段: abc,12h,ghi
传入的参数: 234;2h;gh;abc
这个时候返回的值应该是 true,当然了,我的结果是不但返回是否存在,还返回在传入参数的下标数,结果是11,
原因是传入参数字符串的第11位才是数据库中字段切分后的存在字符串。如果没有找到就返回0。
BEGIN
-- 作者: chuck_home_123_comEND
总结
其中用到了一些mysql的函数如下:
length(str) 求字符串的长度
mysql-> select length('mysql');
-> 5
left(str,len)
返回字符串str的左端len个字符
mysql-> select left('mysql', 3);
-> 'mys'
right(str,len)
返回字符串str的右端len个字符
mysql-> select right('mysql', 3);
-> 'sql'
reverse(str)
颠倒字符串str的字符顺序并返回
mysql-> select reverse('abc');
-> 'cba'
replace(str,from_str,to_str)
用字符串to_str替换字符串str中的子串from_str并返回
mysql-> select replace('www.mysql.com', 'w', 'RK');
-> 'RKRKRK.mysql.com'
concat(str1,str2,...)
把参数连成一个长字符串并返回(任何参数是null时返回null)
mysql-> select concat('my', 's', 'ql');
-> 'mysql'
substring_index(str,delim,count)
返回从字符串str的第count个出现的分隔符delim之后的子串
(count为正数时返回左端,否则返回右端子串)
mysql-> select substring_index('www.mysql.com', '.', 2);
-> 'www.mysql'
locate(substr,str)
返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)
mysql-> select locate('sql', 'mysql');
-> 3
mysql-> select locate('xsq', 'mysql');
-> 0