我想改变输出数据
--------------------------------------
| Name | Phone | Address |
--------------------------------------
| Suwaid 068 | 7658945621 | 23/2 Myf |
| Akbar 0525 | 7658945621 | 23/2 Ngh |
| Shah 02513 | 7658945621 | 23/2 gju |
--------------------------------------
在输出中我希望将名称视为 Suwaid,Akbar,Shah
我应该使用什么SQL查询...
我的查询Select Name, Phone from Table1 ________
答案 0 :(得分:2)
我会将substring_index()
用于此目的。它是一个非常方便的函数,用于从分隔字符串中提取值:
select substring_index(name, ' ', 1) as name, address
from table t;
答案 1 :(得分:0)
因此,Name实际上包含两个数据,一个名称和一个数字,这是人们在数据库中可以避免的。但是,您要查找的是字符串函数,以获取空白之前的部分,即名称:
SELECT
SUBSTRING( 1, INSTR(CONCAT(name, ' ') , ' ') - 1 as PureName,
phone,
address
FROM table1;
我使用CONCAT为Name真正包含名称的情况添加空格,因此INSTR会失败。
答案 2 :(得分:0)
在您的情况下,它将要求查询如下:
获取姓名并删除号码:
with table1 as
(
select 'Suwaid 068' name, 7658945621 Phone, '23/2 Myf' Address from dual union
select 'Akbar 0525' name, 7658945621 Phone, '23/2 Myf' Address from dual union
select 'Foo Bar 123' name, 7658945621 Phone, '23/2 Myf' Address from dual
)
SELECT rtrim(name, '0123456789/') as Name,Phone, Address FROM Table1
order by Name;
仅获取名字:
SELECT NVL(substr(Name, 1, instr(Name,' ')), Name) as Name,Phone, Address FROM Table1
order by Name;
答案 3 :(得分:0)
如果我正确理解您的问题,您会看到一个名为name
的列,其中包含'Jack 123
','Jill 345'
,'Shah 02513'
等字符串。具体来说,您的列包含文本,一个或多个空格,然后是数字。
你没有问过以这种方式格式化列是否是一个好主意,但无论如何我都会提供我的建议:它不是。
您需要的是一种仅提取文本的方法。 SUBSTRING_INDEX()
是MySQL function,非常适合这种情况。我也在这里使用TRIM()
,以防在值的开头或结尾有空格。
SELECT SUBSTRING_INDEX(TRIM(Name), ' ',1) AS Name,
Phone, Address
FROM Table1
如果需要,您还可以使用SUBSTRING_INDEX(TRIM(Name), ' ', -1)
检索Name
列末尾的数字字符串。
答案 4 :(得分:0)
你可以使用它替换所有数字,即使你有Foo Bar 123 bar
它也会给你纯名字。 Foo Bar bar
SELECT
Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Name,'9',''),'8',''),'7',''),'6',''),'5',''),'4',''),'3',''),'2',''),'1',''),'0','') as PureName,
phone,
address
FROM table1;
答案 5 :(得分:0)
如果您使用SUBSTRING
和LOCATE
功能获取相同内容(假设每个帖子的格式为string + space + numbers
),该怎么办?
select substring(Name,1,locate(' ',Name)),
Phone from Table1
答案 6 :(得分:0)
我终于得到了你们所建议的结果。
Select NVL(substr(name,1,instr(name,' ')),name) as PureName,phone from table1