[英]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.