3 回答

TA貢獻1808條經驗 獲得超4個贊
這是另一種方法:
select * from tbl where col like 'ABC%'
union
select * from tbl where col like 'XYZ%'
union
select * from tbl where col like 'PQR%';
這是驗證的測試代碼:
create table tbl (col varchar(255));
insert into tbl (col) values ('ABCDEFG'), ('HIJKLMNO'), ('PQRSTUVW'), ('XYZ');
select * from tbl where col like 'ABC%'
union
select * from tbl where col like 'XYZ%'
union
select * from tbl where col like 'PQR%';
+----------+
| col |
+----------+
| ABCDEFG |
| XYZ |
| PQRSTUVW |
+----------+
3 rows in set (0.00 sec)

TA貢獻1875條經驗 獲得超3個贊
這是臨時表的好用法。
CREATE TEMPORARY TABLE patterns (
pattern VARCHAR(20)
);
INSERT INTO patterns VALUES ('ABC%'), ('XYZ%'), ('PQR%');
SELECT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);
在示例模式中,col無法匹配多個模式,因此可以確保tbl結果中最多只能看到每一行。但是,如果您的模式col可以匹配多個模式,則應使用DISTINCT查詢修飾符。
SELECT DISTINCT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);

TA貢獻1963條經驗 獲得超6個贊
Oracle 10g具有允許在SQL中使用符合POSIX的正則表達式的功能:
REGEXP_LIKE
REGEXP_REPLACE
REGEXP_INSTR
REGEXP_SUBSTR
有關此函數(shù)的語法詳細信息,請參見《Oracle數(shù)據(jù)庫SQL參考》。
使用示例查看Perl中的正則表達式。
代碼:
select * from tbl where regexp_like(col, '^(ABC|XYZ|PQR)');
- 3 回答
- 0 關注
- 3617 瀏覽
添加回答
舉報