Oracle SQL regexp_like 按 unicode 类型
Oracle SQL regexp_like by unicode types
假设我有一个 unicode 类型的模式(或 Unicode 类别,根据 https://www.regular-expressions.info/unicode.html)
LLLLZLLLZLLLL
NNNN
我正在尝试编写 sql 查询,选择与模式完全对应的列中的条目。
我在该列中确实有条目“2343”,以及许多其他混合字母数字或更长(超过 4 个)数字 unicode 字符。
我想准确地检索“2343”(或任何 4 个 unicode 数字条目)。
试了几个,比如
SELECT field1
FROM myTable1
WHERE regexp_like(field1, '[^\p{N}{4}S]');
SELECT field1
FROM myTable1
WHERE regexp_like(field1, '[^\p{N}\p{N}\p{N}\p{N}S]');
没有任何效果。
这似乎不是 unicode 字符的 oracle 语法 类。
尝试 [:digit:]
任何数字。
见here
谢谢@1010!你把我推向了正确的方向!
这些对我有用:
4987 - NNNN
SELECT field1
FROM myTable1
WHERE regexp_like(field1, '^[[:digit:]]{4}$');
Ivan Joe Test - LLLLZLLLZLLLL
SELECT field1
FROM myTable1
WHERE regexp_like(field1, '^[[:alpha:]]{4}[[:space:]][[:alpha:]]{3}[[:space:]][[:alpha:]]{4}$');
假设我有一个 unicode 类型的模式(或 Unicode 类别,根据 https://www.regular-expressions.info/unicode.html)
LLLLZLLLZLLLL
NNNN
我正在尝试编写 sql 查询,选择与模式完全对应的列中的条目。
我在该列中确实有条目“2343”,以及许多其他混合字母数字或更长(超过 4 个)数字 unicode 字符。
我想准确地检索“2343”(或任何 4 个 unicode 数字条目)。
试了几个,比如
SELECT field1
FROM myTable1
WHERE regexp_like(field1, '[^\p{N}{4}S]');
SELECT field1
FROM myTable1
WHERE regexp_like(field1, '[^\p{N}\p{N}\p{N}\p{N}S]');
没有任何效果。
这似乎不是 unicode 字符的 oracle 语法 类。
尝试 [:digit:]
任何数字。
见here
谢谢@1010!你把我推向了正确的方向! 这些对我有用:
4987 - NNNN
SELECT field1
FROM myTable1
WHERE regexp_like(field1, '^[[:digit:]]{4}$');
Ivan Joe Test - LLLLZLLLZLLLL
SELECT field1
FROM myTable1
WHERE regexp_like(field1, '^[[:alpha:]]{4}[[:space:]][[:alpha:]]{3}[[:space:]][[:alpha:]]{4}$');