Как получить подстроку с помощью встроенной функции T-SQL - PullRequest
0 голосов
/ 13 октября 2011

Предположим, у меня есть строка типа "имя, фамилия", хранящаяся в столбце Имя Mytable. тогда я хочу привлечь имя и фамилию в SQL, как

select FirstName = substring(Name, ..),  LastName=substring(Name, ...) from Mytable

Как решить эту проблему?

Ответы [ 3 ]

3 голосов
/ 13 октября 2011

Кредитное плечо PARSENAME ?

SELECT
   PARSENAME(REPLACE(name, ' ', '.'), 2),
   PARSENAME(REPLACE(name, ' ', '.'), 1)
FROM
    MyTable;

РЕДАКТИРОВАТЬ рабочий пример:

DECLARE @MyTable table (name varchar(25))
INSERT @MyTable 
    SELECT 'Joe Smith' 
    UNION SELECT 'Bill Jones' 
    UNION SELECT 'Billy Bob Braxton' 
    UNION SELECT 'Mark'

SELECT
   PARSENAME(REPLACE(name, ' ', '.'), 2),
   PARSENAME(REPLACE(name, ' ', '.'), 1)
FROM
    @MyTable;

Выход:

------ --------
Bill   Jones
Bob    Braxton
Joe    Smith
NULL   Mark    

(4 row(s) affected)
3 голосов
/ 13 октября 2011

Вы можете использовать charindex, чтобы найти местоположение пространства:

select FirstName = substring(Name, 1, charindex(' ', Name)),
       LastName = substring(Name, charindex(' ', Name) + 1, len(Name))
from MyTable

Это изобилует предположениями, например, есть ровно один пробел (что если меня зовут Билли Боб Харрис или Мадонна?)

Вместо того, чтобы делать то, о чем вы просите, вам лучше использовать PARSENAME (как говорится в другом комментарии!).

0 голосов
/ 13 октября 2011

Вы также можете подумать о разделении строки, используя пробел в качестве разделителя, а затем использовать разделенные элементы в качестве имени и фамилии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...