Установите длину подстроки с длиной самых длинных данных в столбце - PullRequest
0 голосов
/ 24 апреля 2018

Я делаю подстроку, чтобы получить все адреса электронной почты, соответствующие определенному коду расходов.Поскольку я заранее не знаю, какой будет максимальная длина, я всегда использую слишком большое значение int, и мне интересно, повлияет ли это на производительность запроса.

Мне нужно получить длинустроки с самыми длинными данными EmployeeEmails и установите @MAXINT с ним

DECLARE @MAXINT INT = 2147483646

SELECT 
JOB.JOBNUMBER AS ExpenseCode,
substring(
    (
        Select ',' + LOWER(EMP.ELECTRONICMAILADDRESS) AS [text()]
        From dbo.EMPLOYEE EMP 
            INNER JOIN ITEM on ITEM.ACCESSLEVELNAME = JOB.ACCESSLEVELNAME
        Where LOWER(EMP.NAME2 + '.' + EMP.NAME3) Collate SQL_Latin1_General_CP1253_CI_AI = ITEM.NAMEOFUSER
            AND GETDATE() < CASE WHEN EMP.DATEENDEMPLOYMENT = '' THEN '2099-01-01' ELSE EMP.DATEENDEMPLOYMENT END
        ORDER BY EMP.ROWID
        For XML PATH ('')
    ), 2, @MAXINT) EmployeeEmails
FROM JOB
ORDER BY JOB.JOBNUMBER

1 Ответ

0 голосов
/ 24 апреля 2018

Не используйте SUBSTRING используйте STUFF.Поэтому вместо выражения:

SUBSTRING((SELECT...),2,2147483646)

Do:

STUFF((SELECT...),1,1,'')

STUFF обычно используется для удаления первых символов с строкового иона SQL Server.

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