ПОДПИСЬ С CHARINDEX - PullRequest
       42

ПОДПИСЬ С CHARINDEX

0 голосов
/ 05 сентября 2018

У меня есть столбец, содержащий две объединенные данные, разделенные символом «/», я хочу получить только то, что находится перед «/», что равно столбцу другой таблицы, поэтому я пытаюсь использовать SUBSTRING с CHARINDEX, но Я думаю, что я делаю что-то не так, следуйте коду.

ПЕРЕВОД: Ола, возможно, ума-колуна, в том числе, когда-то, дадо, конкатенадос, разделенные por'm ' / ', quero pegar apenas o que está antes da ' / ' que Сея Игуал Ума Колуна де Ума Аутра Табела, Para Isso Estou Tentando utilizar o SUBSTRING com CHARINDEX , mas creio que estou fazendo algo de errado, segue o código.

SELECT TOP 1 * FROM arquivo A, tabela_geral B (NOLOCK), campo_concatenado C (NOLOCK)
WHERE A.primeira_parte = SUBSTRING(C.concatenado, 1, CHARINDEX('/', C.concatenado) -1)
AND B.status = 0
AND B.campo = '13'
AND B.numero NOT IN (6, 78, 79, 80, 81, 82, 83, 91)

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Вы должны обрабатывать строки, которые не имеют '/'

Если вы считаете значения, как прежде '/'

SELECT TOP 1 * FROM arquivo A, tabela_geral B (NOLOCK), campo_concatenado C (NOLOCK)
WHERE A.primeira_parte = COALESCE(SUBSTRING(C.concatenado, 1, NULLIF(CHARINDEX('/', C.concatenado), 0) -1), C.concatenado)
AND B.status = 0
AND B.campo = '13'
AND B.numero NOT IN (6, 78, 79, 80, 81, 82, 83, 91)

Если вы считаете значения как после '/'

SELECT TOP 1 * FROM arquivo A, tabela_geral B (NOLOCK), campo_concatenado C (NOLOCK)
WHERE A.primeira_parte = SUBSTRING(C.concatenado, 1, NULLIF(CHARINDEX('/', C.concatenado), 0) -1)
AND B.status = 0
AND B.campo = '13'
AND B.numero NOT IN (6, 78, 79, 80, 81, 82, 83, 91)

И я настоятельно рекомендую обратить внимание на комментарии Шона Ланге

0 голосов
/ 05 сентября 2018

Вы пробовали это?

 SELECT TOP 1 * FROM arquivo A, tabela_geral B (NOLOCK), campo_concatenado C (NOLOCK)
  WHERE A.primeira_parte = "%/"
  AND B.status = 0
  AND B.campo = '13'
  AND B.numero NOT IN (6, 78, 79, 80, 81, 82, 83, 91)
...