Member 11820531 Ответов: 2

Как я могу фильтр передаче аргумента для метода substring (), который позволяет отсеивать персонажа?


Пример столбца, который я пытаюсь изменить:

|   Column 1                                                                        |
 asdf sixsix =IWantToReturnThisIn1Column; asdfasd seven12=IWantToReturnThisInColumn2 


Я хочу, чтобы захватить содержимое между = и ; для col1a и захватить все, что справа от второй = в столбец 2.

Вопрос новичка, я уверен, но он ставит меня в тупик.

Мой желаемый выход выглядел бы следующим образом:
| Col1                      | Col2                       |
 IWantToReturnThisIn1Column | IWantToReturnThisInColumn2 | 


Что я уже пробовал:

ВЫБИРАТЬ
на col1 = подстрока(ум.столбец1,13,20)

Richard Deeming

Вот почему вы не пытаетесь хранить несколько значений в одном столбце. :)

Member 11820531

Согласен, но не совсем тот ответ, который мне нужен :)

2 Ответов

Рейтинг:
2

Patrice T

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

SC= INSTR(d.column1, ";") -- position of ';'
EQ1= INSTR(d.column1, "=") -- position of first '='
Col1= SUBSTRING(d.column1, EQ1+1, SQ-EQ1-1)
EQ2= INSTR(d.column1, "=", SC) -- position of second '='
Col2= SUBSTRING(d.column1, EQ2+1)


Хороший сайт tuto:
Учебник по SQL[^]


Рейтинг:
18

Member 11114915 - Tanvi

SELECT
  SUBSTRING(col1, 14, 26) AS Col1,
  SUBSTRING(col2, 17, 26) AS Col2
FROM col


Этот запрос принесет желаемый результат.

результат запроса:

Col1	                  Col2
IWantToReturnThisIn1Column	IWantToReturnThisInColumn2



Вышесказанное также может быть достигнуто с помощью CHARINDEX в случае, если для разных строк требуется напряжение между "=" и";".

SELECT
  SUBSTRING(Col1, (CHARINDEX('=', col1, 1) + 1), (CHARINDEX(';', col1) - (CHARINDEX('=', col1, 1) + 1))),
  SUBSTRING(Col2, (CHARINDEX('=', col2, 1) + 1), (LEN(col2) - (CHARINDEX('=', col2, 1))))
FROM col



Я надеюсь, что это удовлетворит мое требование.


Member 11820531

Это работает, если столбец всегда одинаковой длины. В качестве примера я использовал один столбец и строку. Но мне нужно разделить на'; ' и ' = ' независимо от длины.

Member 11114915 - Tanvi

Я обновил решение и добавил запрос, чтобы получить символы между " = "и"; " независимо от длины. Пожалуйста, попробуйте это.