phpteam(好无聊) ; 简便的办法就是存入数据库的时候转换成小写或者大写。 非常非常不合適, 資料庫應該保存正確的數據.這個問題應該從數據庫設計的角度來解決, 文本欄位就應該使用 text , varchar 類型.
不同意 再加一个like的方法! 因为要是abcde这个串有多少种形式啊?在加一个like能行吗?加多了like有影响效率。 也不同意 存储时就转化,这样会磨灭个性,而且再读取时无法恢复原貌。还会形成误解。举个例子例如我在这里用ILovePHP的名字注册,可是下次来的时候,我的用户名变成 ilovephp,我看着会很不爽。还有一些特定的地方也许对大小写要求比较严格。 你可以在查找时、注册时吧abcde ABCDE Abcde....等同成一个词,但是绝对不应该把它们化为你自己规定的形式进行储存(个别地方还是可以的,但是论坛、社区之类的程序里绝对不应该)所以,我还是建议在select语句里用转换大小写的函数。 select * from test where 函数(name) like 函数("abcde"); 具体函数我不知道(我才学php,以前一直学jsp的,不好意思啊,说了这么一大堆,原来是个门外汉,不好意思啊!heihei)
SUPPORT:简便的办法就是存入数据库的时候转换成小写或者大写。
是这样的吧: "select * from zhiyuan where LCASE(name) like '%".strtolower($name)."%'"其实万不得已下不怎么推荐用Like+通配符,数据量大时会导致查询速度极慢,不过我也不知道用什么方法代替Like会好点,望高手指点,^_^
获取表单数据时转换大小写 String strtemp = request.getParameter("modeno").toLowerCase()查询时用下列语句 select * from zhiyuan where lower(modeno) like '%strtemp %'
我的这个字段是用来表示人的名字的,我想有255个长度可能就差不多了吧?
anziqi(美洲狮):
再加一个like,什么意思啊,能不能说清楚一点啊?
这是什么意思?
'表中有Alice这个名字,我输入alice就查不到'你想搜索到对不对,为什么你还定义成BINARY
'我没有办法使别人注册的时候一定统一成大写或者小写',他注册什么你用什么验正就是了,晕~~~~
中文没有做过你看看
http://expert.csdn.net/Expert/topic/1309/1309751.xml?temp=3.840274E-02
binaray大小写敏感的用varchar或text表示人名用varchar(20)就够了
非常非常不合適, 資料庫應該保存正確的數據.這個問題應該從數據庫設計的角度來解決, 文本欄位就應該使用 text , varchar 類型.
因为要是abcde这个串有多少种形式啊?在加一个like能行吗?加多了like有影响效率。
也不同意 存储时就转化,这样会磨灭个性,而且再读取时无法恢复原貌。还会形成误解。举个例子例如我在这里用ILovePHP的名字注册,可是下次来的时候,我的用户名变成
ilovephp,我看着会很不爽。还有一些特定的地方也许对大小写要求比较严格。
你可以在查找时、注册时吧abcde ABCDE Abcde....等同成一个词,但是绝对不应该把它们化为你自己规定的形式进行储存(个别地方还是可以的,但是论坛、社区之类的程序里绝对不应该)所以,我还是建议在select语句里用转换大小写的函数。
select * from test where 函数(name) like 函数("abcde");
具体函数我不知道(我才学php,以前一直学jsp的,不好意思啊,说了这么一大堆,原来是个门外汉,不好意思啊!heihei)
"select * from zhiyuan where LCASE(name) like '%".strtolower($name)."%'"其实万不得已下不怎么推荐用Like+通配符,数据量大时会导致查询速度极慢,不过我也不知道用什么方法代替Like会好点,望高手指点,^_^
String strtemp = request.getParameter("modeno").toLowerCase()查询时用下列语句
select * from zhiyuan where lower(modeno) like '%strtemp %'
写成了JSP语句,改成PHP就可