我的 SQL 表有一列包含人名和姓氏,如“Mike Baldwin”、“Sara Larson”等,需要输出所有姓名以“M”开头或姓氏倒数第二个字母为“i”的人。如何将其写入脚本文件?
所以我制作了这个脚本:
SELECT * WHERE CLIENT LIKE 'M%' OR CLIENT LIKE '%i_'
但是这个脚本输出名字的倒数第二个字母也是“i”的人。
据我了解;根据您的解释,
name
和surname
是两个不同的列;
select *
from table_name
where name like'M%' OR surname like '%i_';
应该可以工作。
请替换上面查询中的实际列名
====================================================== ===========
更新: 基于解释; 有一个列
client
存储 name
和 surname
,并用空格分隔
select *
from table_name
where SUBSTR(client, 1, 1) = 'M'
OR SUBSTR(client, INSTR(client, ' ', -1) - 1, 1) = 'i';
考虑在这里使用一些正则表达式。类似的东西,但我不知道正则表达式在 oracle 中是如何工作的?
SELECT *
FROM table_name
WHERE CLIENT LIKE 'M%' OR
REGEX_LIKE (CLIENT , '^[a-zA-Z]+\s.[i]+[a-zA-Z]*$')
更新了正则表达式!