簡體   English   中英

如何通過 LIKE '%\xC2\xA0%' 找到 UTF-8 代碼?

[英]How to find UTF-8 codes via LIKE '%\xC2\xA0%'?

我有一列包含 NO-BREAK SPACE (\xC2\xA0) 而不是 SPACE,我需要找到那些行。

復制粘貼作品:

SELECT PRODUCT_NAME
FROM TABLE t
WHERE PRODUCT_NAME LIKE '% %'

但使用代碼點不會:

SELECT PRODUCT_NAME
FROM TABLE t
WHERE PRODUCT_NAME LIKE '%\xC2\xA0%'

如何通過 \x 代碼點找到列包含此類符號的行?

嘗試

WHERE regexp_Like(PRODUCT_NAME, UNISTR('\00A0')) 

根據您的數據庫字符集,您可以嘗試CHR(106)而不是UNISTR('\00A0')

xC2 xA0不是代碼點,它是在 UTF-8 編碼的 Unicode 字符U+00A0 (無換行符)的二進制表示。 Unicode代碼點U+00A0或 160(十進制)

Exasol 不支持 \x 轉義序列。 “\xC2\xA0”不是碼位,而是碼位U+00A0(十進制160)的UTF-8編碼。 有關詳細信息,請參閱https://www.compart.com/en/unicode/U+00A0

但是,您可以使用UNICODECHR(...)

SELECT PRODUCT_NAME
FROM TABLE t
WHERE PRODUCT_NAME LIKE '%'||unicodechr(160)||'%'

請注意,您必須給它十進制 unicode 代碼點。 不是 UTF-8 編碼。 您可以使用select to_number('00A0', 'XXXX'); 將十六進制轉換為十進制。

如果您絕對需要使用 \x 轉義序列,您可以創建一個 UDF。 有關詳細信息,請參閱https://docs.exasol.com/7.1/database_concepts/udf_scripts.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM