Как удалить первые символы определенного столбца в таблице? - PullRequest
135 голосов
/ 11 июня 2009

В SQL, как я могу удалить первые 4 символа значений определенного столбца в таблице? Имя столбца Student Code, а примерное значение ABCD123Stu1231. Я хочу удалить первые 4 символа из моей таблицы для всех записей

Пожалуйста, ведите меня

Ответы [ 12 ]

217 голосов
/ 11 июня 2009
SELECT RIGHT(MyColumn, LEN(MyColumn) - 4) AS MyTrimmedColumn

Edit: Для объяснения, RIGHT принимает 2 аргумента - строку (или столбец) для работы и количество возвращаемых символов (начиная с «правой» части строки). LEN возвращает длину данных столбца, и мы вычитаем четыре, так что наша функция RIGHT оставляет 4 крайних левых символа «позади».

Надеюсь, это имеет смысл.

Отредактируйте снова - я только что прочитал ответ Эндрю, и он вполне мог правильно интерпретировать, и я могу ошибаться. Если дело обстоит именно так (и вы хотите ОБНОВИТЬ таблицу, а не просто возвращать поддающиеся проверке результаты), вы можете сделать это:

UPDATE MyTable
SET MyColumn = RIGHT(MyColumn, LEN(MyColumn) - 4)

Он на правильном пути, но его решение сохранит 4 символа в начале строки, а не отбрасывает указанные 4 символа.

75 голосов
/ 06 сентября 2012
Stuff(someColumn, 1, 4, '')

Здесь говорится, начиная с первой 1 позиции символа, замените 4 символы ничем ''

28 голосов
/ 11 июня 2009

Зачем использовать LEN, чтобы у вас были 2 строковые функции? Все, что вам нужно, это символ 5 на ...

...SUBSTRING (Code1, 5, 8000)...
12 голосов
/ 11 июня 2009

Попробуйте это:

update table YourTable
set YourField = substring(YourField, 5, len(YourField)-3);
6 голосов
/ 11 июня 2009

Вот простой макет того, что вы пытаетесь сделать:)

CREATE TABLE Codes
(
code1 varchar(10),
code2 varchar(10)
)

INSERT INTO Codes (CODE1, CODE2) vALUES ('ABCD1234','')


UPDATE Codes
SET code2 = SUBSTRING(Code1, 5, LEN(CODE1) -4)

Итак, используйте последний оператор для поля, которое вы хотите обрезать:)

Функция SUBSTRING отключает Code1, начиная с символа FIFTH и продолжая в течение длины CODE1 минус 4 (количество символов, пропущенных в начале).

4 голосов
/ 22 февраля 2014

Полная вещь

DECLARE @v varchar(10)

SET @v='#temp'

select STUFF(@v, 1, 1, '')
WHERE LEFT(@v,1)='#'
2 голосов
/ 15 сентября 2017

Попробуй это. 100% работает

UPDATE Table_Name
SET RIGHT(column_name, LEN(column_name) - 1)

1 голос
/ 10 апреля 2017

Хорошо бы поделиться, для использования DB2: INSERT(someColumn, 1, 4, '')

Stuff не поддерживается в DB2

1 голос
/ 01 мая 2016

Встроенная функция обрезки идеально подходит для этой цели.

SELECT trim(both 'ag' from 'asdfg');
btrim 
-------
 sdf
(1 riga)

http://www.postgresql.org/docs/8.1/static/functions-string.html

1 голос
/ 25 февраля 2016

Вы также можете сделать это в SQL ..

substring(StudentCode,4,len(StudentCode))

синтаксис

substring (ColumnName,<Number of starting Character which u want to remove>,<length of given string>)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...