как разделить значения столбца mysql, ограниченного значением, на другой столбец?

#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 обновляются до значений столбца один, даже если для этой строки нет разделителя.