#mysql
#mysql
Вопрос:
У меня есть столбец, содержащий номера домов и единиц измерения. Мне нужны номера домов и единиц измерения в двух разных столбцах.
Номера единиц измерения содержатся в скобках. Ниже приведены примеры данных:
Column 1 Column 2
85 (Unit A)
85 (Unit B)
86
87 - 89 (Unit A)
Желаемый результат заключается в следующем:
Column 1 Column 2
85 Unit A)
85 Unit B)
86
87 - 89 Unit A)
Значения разделяются символом ‘(‘
Как мне это сделать?
Редактировать
UPDATE your_table
SET column2 = SUBSTRING_INDEX(your_table.column1,'(', -1),
column1 = SUBSTRING_INDEX(your_table.column1,'(', 1)
Результат этого запроса следующий:
Column 1 Column 2
85 Unit A)
85 Unit B)
86 86
87 - 89 Unit A)
Мне не нужно обновлять столбец ’86’ 2! Я хочу, чтобы оно оставалось равным null, если нет ‘(‘ Как мне это сделать?
Ответ №1:
Для выбора,
SELECT SUBSTRING_INDEX( Col1 , '(', 1 ) AS C1,SUBSTRING_INDEX(SUBSTRING_INDEX( Col1 , '(', 2 ),'(',-1) AS C2 from Tablename
Для обновления
Update TableName set Column1= SUBSTRING_INDEX( Column1 , '(', 1 ) ,Column2= SUBSTRING_INDEX(SUBSTRING_INDEX( Column1 , '(', 2 ),'(',-1) ;
Комментарии:
1. Запрос частично работает, но я должен обновить ‘Column2’ перед обновлением ‘Column 1’, в противном случае исходные значения column1 изменяются перед обновлением ‘column2’. Проблема в том, что значения столбца 2 обновляются до значений столбца один, даже если для этой строки нет разделителя.
Ответ №2:
UPDATE your_table SET column1 = SUBSTRING_INDEX(your_table.column1,'(', 1), column2 = SUBSTRING_INDEX(your_table.column1,'(', -1)
Комментарии:
1. Запрос частично работает, но я должен обновить ‘Column2’ перед обновлением ‘Column 1’, в противном случае исходные значения column1 изменяются перед обновлением ‘column2’. Проблема в том, что значения столбца 2 обновляются до значений столбца один, даже если для этой строки нет разделителя.