sql - 我怎样才能编写 SQL 代码,所以我只能得到第一个名称?
问题描述
从此查询 SELECT NAME FROM OBJ_R
当前输出为
NAME
--------
Müller, Peter
Mettler, Hans
Casalugi, Maria
如何获得这个预期的输出:
Name
--------
Müller
Mettler
Casalugi
并且:
First_Name
----------
Peter
Hans
Maria
解决方案
将 SUBSTR 与 INSTR 一起使用
select CASE WHEN INSTR(NAME,',') > 0 THEN SUBSTR(NAME,1,INSTR(NAME,',')-1) ELSE NAME END as Name from OBJ_R;
select CASE WHEN INSTR(NAME,',') > 0 THEN LTRIM(SUBSTR(NAME,INSTR(NAME,',')+1,LENGTH(NAME))) ELSE ' ' END as First_Name from OBJ_R;
PostgreSQL和 MySql
将 SUBSTRING 与 POSITION 一起使用
select CASE WHEN POSITION(',' IN NAME) > 0 THEN SUBSTRING(NAME FROM 1 FOR POSITION(',' IN NAME)-1) ELSE NAME END as Name FROM OBJ_R;
select CASE WHEN POSITION(',' IN NAME) > 0 THEN TRIM(LEADING ' ' FROM SUBSTRING(NAME FROM POSITION(',' IN NAME)+1 FOR LENGTH(NAME))) ELSE '' END as First_Name FROM OBJ_R;
将 SUBSTRING 与CHARINDEX或PATINDEX一起使用。
select case when charindex(',',NAME) > 0 then substring(NAME,0,charindex(',',NAME)-1) else NAME end as Name from OBJ_R;
select ltrim(substring(NAME, charindex(',', NAME)+1, len(NAME))) as first_name from OBJ_R;
mysql
在 MySql 中还有一些其他的技巧可以使用。
select SUBSTRING_INDEX(NAME,', ', 1) as Name FROM OBJ_R;
select SUBSTRING_INDEX(NAME,', ',-1) as First_Name FROM OBJ_R;
将 SUBSTRING 与LOCATE一起使用
select CASE WHEN LOCATE(',',NAME) > 0 THEN SUBSTRING(NAME FROM 1 FOR LOCATE(',',NAME)-1) ELSE NAME END as Name FROM OBJ_R;
select CASE WHEN LOCATE(',',NAME) > 0 THEN LTRIM(SUBSTRING(NAME FROM LOCATE(',',NAME)+1 FOR LENGTH(NAME))) ELSE '' END as First_Name FROM OBJ_R;
使用 LEFT 和 RIGHT
select LEFT(NAME, LOCATE(', ',NAME)-1) as Name FROM OBJ_R;
select RIGHT(NAME, LOCATE(' ,',REVERSE(NAME))-1) as First_Name FROM OBJ_R;
推荐阅读
- r - 具有两个条件重置的时间序列累积和
- html - 如何构建项目直接在彼此下方的网格?
- javascript - 如何在 ECharts 折线图中使用 unix 时间戳作为 x 值但日期作为 x 标签
- java - LWJGL 入门 HelloWorld 代码 java exec 窗口未打开
- python - 根据条件获取pandas单元格的行列索引
- python - 使用 Python 抓取时如何在每个图像名称的末尾添加文本
- python - 使用 Python For Loop 抓取包含多行数据的电子邮件收据
- flutter - 寻找一种在离线模式下验证散列用户名和密码的更好方法
- postgresql - SQL 将表与条件格式相结合
- vuejs3 - vue composition api没有按预期工作