MySQL: как удалить строку из столбца - PullRequest
2 голосов
/ 06 сентября 2011

Очень просто. У меня есть столбец с такой строкой:

 abc1
 abc2
 abc3
 abc4
 abc5

Мне нужно удалить «abc» из этого столбца и оставить только число справа, поэтому в столбце будет только число, подобное:

 1
 2
 3
 4
 5

Я думал о чём-то подобном, но это не работает

update table2
-> set col1 = case when 'abc1' then 1
-> else end;

Я знаю, как объединить текст, я не знаю, как его отменить ...Помогите пожалуйста ^^;

Ответы [ 2 ]

3 голосов
/ 06 сентября 2011

@ Макартей уже намекал на это, но это легко сделать, когда «abc» последовательно «abc» (т. Е. Длина не меняется).

Среди различных строковых функций , в частности, одна: RIGHT(). Это позволяет вам выбрать фиксированное количество символов в строке. например, * +1008 *

SELECT RIGHT('abc3',1) -- Results in "3"
SELECT RIGHT('abc3',2) -- Results in "c3"

В сочетании с функцией LENGTH() вы можете заключить, что числа идут после 3-го символа. т.е.

SELECT RIGHT('abc3',LENGTH('abc3')-3) -- Results in "3"

Очевидно, что я использую жесткие строки ('abc3'), но их можно легко заменить именами столбцов.

Предостережение заключается в том, что все они основаны на буквенных префиксах фиксированной длины. Чем больше переменная (изменение) «abc» в вашем примере, тем сложнее становится выбор числового значения из столбца.

1 голос
/ 06 сентября 2011

Если это однозначные значения, вы можете использовать

select right(column,1) ...

Вы также можете найти документы REGEXP полезными, если они более сложные.

Если вы пытаетесь изменить столбец, вам придется взять значения отдельно, а затем объединить их вместе. Трудно дать точный ответ, так как я не знаю, чего вы пытаетесь достичь, но вы могли бы что-то сделать с SUBSTR, чтобы получить отдельные значения.

Получить 'abc': SUBSTR (столбец, 1,3)

Получить цифры: SUBSTR (столбец, 4)

...