我尝试将name列分开并创建一个id列,如下所示:
myTable的:
name
John F1234567
Mary F7654321
...
到目前为止,我所做的是:
select RIGHT(name,8) as id, name FROM myTable
结果:
id name
F1234567 John F1234567
F7654321 Mary F7654321
但我需要的结果是:
id name
F1234567 John
F7654321 Mary
我使用了一些字符串函数,但没有成功。
有人可以帮助我吗?
提前致谢。
答案 0 :(得分:1)
您可以尝试使用替换功能
select RIGHT(name,8) as id, replace(name, right(name,8), '') as name FROM myTable
答案 1 :(得分:1)
用right(name,8)
替换''
可能不是正确的方法。
Select
right(name, 8) as id,
RTRIM(STUFF(name, (len(name) - 8) + 1, len(name) , '')) as name
from table
答案 2 :(得分:0)
select RIGHT(name,8) as id, SUBSTRING(@name,1,CHARINDEX(' ',@name)) as name FROM myTable
答案 3 :(得分:0)
您可以使用CHARINDEX的LEFT功能来获取空间左侧的所有内容。
select LEFT('John F1234567', CHARINDEX(' ','John F1234567')-1)
返回John
CHARINDEX查找指定的字符串并返回其在字符串中的位置。我假设这个领域总是有这个空间。
答案 4 :(得分:0)
这与Kannan Kandasamy的回答一样,也将清理任何前导和尾随空格。
SELECT
RIGHT(name,8) as id
,ltrim(rtrim(replace(name, right(name,8), '')) as name
FROM myTable
答案 5 :(得分:0)
SELECT SUBSTRING(名称,0,CHARINDEX('',名称)),SUBSTRING(名称,CHARINDEX('',名称),LEN(名称))FROM myTable