【发布时间】:2018-11-03 16:57:35
【问题描述】:
我在使用 Oracle、MySQL、雪花查询的 where 子句中遇到了非 ascii 字符的问题。
SELECT * FROM TABLE WHERE col = 'Niño Pobre, Niño Rico';
此查询不返回任何结果。
有没有办法处理where子句中的非ascii字符,请回复我。
谢谢。
【问题讨论】:
-
select * from table where col = N'Niño Pobre, Niño Rico'; -
您使用的是 Oracle 还是 MySQL?它们属于同一家公司,但它们是不同的产品。此外,您需要确定“句柄”的含义。
Niño应该匹配Nino吗?它应该不匹配吗?最后但同样重要的是,您的应用程序和数据库使用什么编码? -
@lad2025,它在 Oracle 或 Mysql 中不起作用,它在 SQL 中起作用。
-
我认为没有跨 DBMS 解决方案。在 MySQL 中,您需要找到实现所需规则的排序规则(并且您可能需要避免使用西班牙语排序规则)并将其设置为例如COLLATE 子句。在 Oracle 中,您需要使用 session parameters and function arguments。如您所见,语法差别不大
-
Snowflake 支持这样的查询。我怀疑问题出在你使用 Python 上。默认情况下,Python 不喜欢非 ascii 字符。您是否从命令行进行过测试?如果 Python 是问题,请告诉我们,我可以发布一个示例 Python 程序,它可以正常工作(对于 Snowflake)
标签: mysql oracle11g mysql-python snowflake-cloud-data-platform