我的 MySql 有问题我有一个表格,其中包含来自网站的解析信息。出现了一个奇怪的字符串解释:
查询
select id, address from pagesjaunes_test where address = substr(address,1,length(address)-1)
返回一组值而不是无
一开始我执行的功能如下:
address = replace(address, '\n', '')
address = replace(address, '\t', '')
address = replace(address, '\r', '')
address = replace(address, '\r\n', '')
address = trim(address)
但问题仍然存在。
字段“地址”的值有一些法语字符,但查询返回的值也只包含字母数字英语字符。
另一个测试:我试图检查字符串的长度...... PHP 的 strlen() 和 MYSQL 的 LENGTH() 显示不同的结果!某处差异是 2 个字符,某处是 1 个字符,没有特定的“规则”。
视觉我看不到任何空格或标签或其他东西。
在我手动修改了一个地址之后(我删除了所有字符串并重新编写了它),问题解决了,但我有〜6000个值,所以这不是一个解决方案:)
可能是什么问题?
我想字符串可以有“空字符”之类的东西,但是如何检测和删除它呢?
谢谢
PS问题不仅仅是长度。我需要将此表与另一个表连接起来,并使用一个条件来检查字段“地址”中的值是否相等。即使字段具有相同的排序规则并且表具有相同的排序规则,查询也会返回没有匹配的地址
例如
查询:
SELECT p.address,char_length(p.address) , r.address, char_length(r.address)
FROM `pagesjaunes_test` p
LEFT JOIN restaurants r on p.name=r.name
WHERE
p.postal_code=r.postal_code
and p.address!=r.address
and p.phone=''
and p.cuisines=''
LIMIT 10
所以:p.address!=r.address
结果是:
+--------------------------------------+------------ ----------+--------------+--------- ---------------+ | 地址 | char_length(p.address) | 地址 | char_length(r.address) | +--------------------------------------+------------ ----------+--------------+--------- ---------------+ | Dupin Marc13 quai Grands Augustins | 34 | 13 quai Grands 奥古斯丁 | 24 | | 39 r 蒙彭西耶 | 16 | 39 r 蒙彭西耶 | 16 | | 8 r 拜伦勋爵 | 14 | 3 r 巴尔扎克 | 10 | | 162 r 沃吉拉尔 | 15 | 162 r 沃吉拉尔 | 15 | | 32 r Goutte d'Or | 16 | 32 r Goutte d'Or | 16 | | 2 r Casimir Périer | 18 | 2 r Casimir Périer | 18 | | 20 r Saussier Leroy | 19 | 20 r Saussier Leroy | 19 | | Senes Douglas22 r Greneta | 25 | 22 r 格雷内塔 | 12 | | Ngov Ly Mey44 r Tolbiac | 23 | 44 r 托比亚克 | 12 | | 33 r ND 拿撒勒 | 20 | 33 r ND 拿撒勒 | 20 | +--------------------------------------+------------ ----------+--------------+--------- ---------------+
如您所见,“162 r Vaugirard”、“20 r Saussier Leroy”仅包含 ASCII 字符,长度相同但不相等!