Как удалить первые символы определенного столбца в таблице?

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

Прошу вас уведомить

Ответ 1

SELECT RIGHT(MyColumn, LEN(MyColumn) - 4) AS MyTrimmedColumn

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

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

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

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

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

Ответ 2

Stuff(someColumn, 1, 4, '')

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

Ответ 3

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

...SUBSTRING (Code1, 5, 8000)...

Ответ 4

Попробуйте следующее:

update table YourTable
set YourField = substring(YourField, 5, len(YourField)-3);

Ответ 5

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

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 обрезает код1, начиная с символа FIFTH, и продолжает длину CODE1 меньше 4 (количество символов, пропущенных в начале).

Ответ 6

Полная вещь

DECLARE @v varchar(10)

SET @v='#temp'

select STUFF(@v, 1, 1, '')
WHERE LEFT(@v,1)='#'

Ответ 7

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

substring(StudentCode,4,len(StudentCode))

синтаксис

substring (ColumnName,<Number of starting Character which u want to remove>,<length of given string>)

Ответ 8

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

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

   

Ответ 10

Было бы хорошо поделиться, для DB2: INSERT(someColumn, 1, 4, '')

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

Ответ 11

Если вам нужно удалить первые несколько символов, которым предшествует специальный символ типа #, это хороший вариант:

UPDATE tblInvalidID
SET [ColumnName] =stuff(ColumnName, 1, charindex('#', ColumnName), ' ') 

Ответ 12

Верхний ответ имеет неожиданное поведение, когда длина строки меньше ожидаемой, поскольку передача отрицательных значений в RIGHT обрезает первые символы вместо всей строки. Имеет смысл использовать RIGHT(MyColumn, -5) вместо этого.

create temp table foo (foo) as values ('123456789'),('12345678'),('1234567'),('123456'),('12345'),('1234'),('123'),('12'),('1'), ('');

select foo, right(foo, length(foo) - 5), right(foo, -5) from foo;

foo       len(foo) - 5  just -5   
--------- ------------  -------     
123456789 6789          6789 
12345678  678           678  
1234567   67            67   
123456    6             6    
12345                       
1234      234               
123       3                 
12                          
1