Вычисляемые столбцы SQL Server - разделение на разрыв строки - PullRequest
0 голосов
/ 11 августа 2010

У меня есть столбец с данными имени и адреса в одном столбце:

Jo Bloggs
Address Line 1
Address Line 2
PostCode

Можно ли затем создать два вычисляемых столбца на основе этого, и если да, то как? например,

имя_получатель

Jo Bloggs

Адрес

Address Line 1
Address Line 2
PostCode

Я использую SQL Server 2005

1 Ответ

0 голосов
/ 11 августа 2010

Вы можете сделать это так;

CREATE TABLE ...
(
 ...
 WholeAddress  VARCHAR(256),
 RecipientName AS dbo.fnGetAddressPart(1, WholeAddress),
 Address       AS dbo.fnGetAddressPart(2, WholeAddress)
)

Где UDF находится вдоль линий;

CREATE FUNCTION fnGetAddressPart (@PARTID TINYINT, @DATA VARCHAR(256)) RETURNS VARCHAR(256) AS BEGIN
    DECLARE @POS INT SET @POS = CHARINDEX(CHAR(13) + CHAR(10), @DATA, 1)
    IF (@POS = 0 OR LEN(@DATA) <= 2) --no new lines or just \r\n
        RETURN CASE @PARTID
            WHEN 1 THEN @DATA --return name only
            ELSE '' --no address part
        END

    RETURN CASE @PARTID
        WHEN 1 THEN LEFT(@DATA, @POS - 2)
        ELSE RIGHT(@DATA, LEN(@DATA) - @POS - 1)
    END
END

Однако было бы лучше разбить элементы адреса на отдельные поля.

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