【问题标题】:how to handle non ascii characters in where clause如何处理where子句中的非ASCII字符
【发布时间】: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


【解决方案1】:

Maurcin 和 user3278684 制作了有关雪花数据仓库的 cmets。

在 Snowflake 中使用多种语言处理数据时,COLLATION() 函数非常有用。

例如,假设您有一个名为 feedback 的表,其中包含两列


|编号 |反馈字符串 |


| 1 | 'Niño Pobre,Niño Rico'|


从反馈中选择整理(反馈字符串) WHERE feedback_string like '%Niño Pobre, Niño Rico%';

如果您想创建一个表来搜索特定语言的字符串,您可以在 Snowflake 中创建相同的表,如下所示:

CREATE TABLE 反馈(id NUMBER,feedback_string varchar(20) collat​​e 'sp');

INSERT INTO collat​​ion1 (v) VALUES (1, 'Niño Pobre, Niño Rico');

然后您可以使用 Like 进行搜索,但要知道搜索 N 将接近 ñ。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2013-07-13
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2011-06-03
    • 2013-03-22
    相关资源
    最近更新 更多