选择查询在MySQL删除这些字符
问题描述:
SELECT * FROM mytablename
WHERE sku
= 'AZ-EFCQ-5' LIMIT 0,30选择查询在MySQL删除这些字符
在MySQL表(描述字段)有一些奇怪的字符在在200,000条记录中,所有这些字符都有近400条记录。
例子:该字段的一个数据库记录显示如下,当我运行查询
Select * from mytablename where sku='az123'
Replacement for TOY TRAIN 746 N&W J Replacement Light Bulb
但是当我运行在PHP中相同的查询和打印,它显示
Replacement For TOY TRAIN 746 N&W JÂ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Replacement Light Bulb
我尝试使用以下溶液在
答
在聊天中进一步分析MySQL的截图表明,真的有东西坏了关于MySQL数据库之间的连接处理的字符集和PHP程序的运行,我们想出了下面的“解决方案”:
SELECT replace(description, char(160), ' ') as description
FROM dumpdata WHERE AZ_Code = 'AZ-EFK9-6'
隐藏字符实际上这在某种程度上得到了由导入过程中引入
秒。由于它们没有任何信息,但只是令人不安,可以在读取列时将它们替换掉(参见上面的SQL语句)。这根本原因并不是真正的解决方案 - 它更像是一种解决方法。但是,为了给定的目的,它被认为是足够的。
注意可能存在类似问题的其他读者:数据库连接由面向对象风格的mysqli
驱动。我们试图
$conn->set_charset('utf8')
并确认通过conn->get_charset()
,这也是成功的。但是,有线字符的问题仍然出现。此外,我们也尝试了明确投与
SELECT cast(description as char character set utf8)
FROM dumpdata WHERE `AZ_Code` = 'AZ-EFK9-6'
但也没有触发适当的字符集转换。
请问您可以从mytablename中选择ascii(substring(description,36,1)),length(描述),其中sku ='az123''并发布结果? – EagleRainbow
@EagleRainbow显示行0 - 0(总计1次,查询花费0.0005秒),不返回任何内容 – user580950
这很奇怪,你认为在聊天室中讨论这个问题在https://chat.stackoverflow.com/房间/ 113259 /选择查询-地移除这些字符,在MySQL的? – EagleRainbow