我正在编写一个脚本,该脚本应该获取包含指定列的表名列表,并排除包含下划线的表名.我试过了:
SELECT TABLE_NAME
FROM USER_TAB_COLUMNS
WHERE
COLUMN_NAME = 'SERIAL_NUMBER' AND
TABLE_NAME NOT LIKE '%\_%';
Run Code Online (Sandbox Code Playgroud)
此查询仍然会提取包含下划线的表名.我错过了什么?
Underscore是LIKE语句中的通配符 - 它只匹配一个字符.试试这个:
SELECT TABLE_NAME
FROM USER_TAB_COLUMNS
WHERE COLUMN_NAME = 'SERIAL_NUMBER'
AND instr(TABLE_NAME, '_') = 0;
Run Code Online (Sandbox Code Playgroud)
发布后我注意到你实际上试图逃避下划线.LIKE没有默认转义字符,因此您需要告诉数据库您正在做什么:
SELECT TABLE_NAME
FROM USER_TAB_COLUMNS
WHERE COLUMN_NAME = 'SERIAL_NUMBER'
AND TABLE_NAME NOT LIKE '%\_%' ESCAPE '\';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3819 次 |
| 最近记录: |