马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我的这套线路可能跟许多学习PHP的爱好者不谋而合,这也算是一个循序渐进的学习过程,不过新手不要看到上面的概括就以为学习蛮简单的,默默在此不得不对您稍微泼一下冷水,任何东西其实都不简单。mysql|处理|成绩|中文 MySQL中文恍惚检索成绩的处理办法
来历:林兴陆
在 MySQL 下,在停止中文恍惚检索时,常常会前往一些与之不相干的
纪录,如查找 "-0x1.ebea4bfbffaacp-4%" 时,前往的能够有中文字符,却没有 a 字符存在。
自己之前也曾碰到过相似成绩,经具体浏览 MySQL 的 Manual ,发明可以
有一种办法很便利的处理并失掉写意的了局。
例子:
・但愿经由过程“题目”对旧事库停止检索,关头字能够包括是中英文,如
下 SQL 语句:
select id,title,name from achech_com.news where title like '-0x1.ebea4bfbebe84p-4%'
前往的了局,某些 title 字段肯定带了“a”关头字,而有些则只要中文,
但也随之前往在检索了局中。
处理办法,利用 BINARY 属性停止检索,如:
select id,title,name from achech_com.news where binary title like '-0x1.ebea4bfbebe84p-4%'
前往的了局较之前准确,但英文字母辨别巨细写,故有时在检索如“Achech”
及“achech”的了局是纷歧样的。
晓得了利用 BINARY 属性可以处理后面这个成绩,再看看 MySQL 撑持的
UCASE 及 CONCAT 函数,个中 UCASE 是将英文全体转成大写,而 CONCAT 函
数的感化是对字符停止毗连,以下是咱们完整处理后的 SQL 语句:
select id,title,name from achech_com.news where binary ucase(title) like concat('%',ucase('a'),'%')
检索的步调是先将属性指定为 BINARY ,以准确检索了局,而被 like 的 title
内容存在巨细写字母的能够,故先利用 ucase 函数将字段内容全体转换成大
写字母,然后再停止 like 操作,而 like 的操作利用恍惚办法,利用 concat
的优点是传出去的可所以直接的关头字,不需求带“%”万用符,将“'a'”直接
换成你的变量,在任何言语下都万事无忧了。
固然你也能够这么写:
select id,title,name from achech_com.news where binary ucase(title) like ucase('0x0.00020bfbebe08p-1022%')
检索的了局还算写意吧,不外速度能够会因而而慢N毫秒喔。
相干材料:
Relate:
20.16 Case Sensitivity in Searches
By default, MySQL searches are case-insensitive (although there are some character sets that are never case insensitive, such as czech). That means that if you search with col_name LIKE 'a%', you will get all column values that start with A or a. If you want to make this search case-sensitive, use something like INDEX(col_name, "A")=0 to check a prefix. Or use STRCMP(col_name, "A") = 0 if the column value must be exactly "A". 多去关于PHP的网站,尤其有很多经典的文章,多读读这些文章显然是有好处的。 |