В SQL, как я могу удалить первые 4 символа значений определенного столбца в таблице? Имя столбца Student Code
, а примерное значение - ABCD123Stu1231
.
Я хочу удалить первые 4 символа из таблицы для всех записей
Прошу вас уведомить
В SQL, как я могу удалить первые 4 символа значений определенного столбца в таблице? Имя столбца Student Code
, а примерное значение - ABCD123Stu1231
.
Я хочу удалить первые 4 символа из таблицы для всех записей
Прошу вас уведомить
SELECT RIGHT(MyColumn, LEN(MyColumn) - 4) AS MyTrimmedColumn
Изменить: Чтобы объяснить, RIGHT принимает 2 аргумента - строку (или столбец) для работы и количество возвращаемых символов (начиная со "правой" строки). LEN возвращает длину данных столбца, и мы вычитаем четыре так, чтобы наша функция RIGHT оставила самые левые 4 символа "позади".
Надеюсь, что это имеет смысл.
Изменить еще раз - я только что прочитал ответ Эндрю, и он вполне может правильно вмешаться, и я могу ошибаться. Если это так (и вы хотите ОБНОВИТЬ таблицу, а не просто возвращать результаты, полученные с помощью метода), вы можете сделать это:
UPDATE MyTable
SET MyColumn = RIGHT(MyColumn, LEN(MyColumn) - 4)
Он на правильном пути, но его решение будет содержать 4 символа в начале строки, вместо того, чтобы отбрасывать указанные 4 символа.
Stuff(someColumn, 1, 4, '')
Это говорит, начиная с первой позиции символа 1
, замените 4
символами ничем ''
Зачем использовать LEN, чтобы у вас было 2 строковых функции? Все, что вам нужно, это символ 5...
...SUBSTRING (Code1, 5, 8000)...
Попробуйте следующее:
update table YourTable
set YourField = substring(YourField, 5, len(YourField)-3);
Вот простой макет того, что вы пытаетесь сделать:)
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 (количество символов, пропущенных в начале).
Полная вещь
DECLARE @v varchar(10)
SET @v='#temp'
select STUFF(@v, 1, 1, '')
WHERE LEFT(@v,1)='#'
Вы также можете сделать это в SQL..
substring(StudentCode,4,len(StudentCode))
синтаксис
substring (ColumnName,<Number of starting Character which u want to remove>,<length of given string>)
Попробуйте это. 100% работающий
UPDATE Table_Name
SET RIGHT(column_name, LEN(column_name) - 1)
Там встроена функция отделки, которая идеально подходит для этой цели.
SELECT trim(both 'ag' from 'asdfg');
btrim
-------
sdf
(1 riga)
http://www.postgresql.org/docs/8.1/static/functions-string.html
Было бы хорошо поделиться, для DB2:
INSERT(someColumn, 1, 4, '')
Stuff
не поддерживается в DB2
Если вам нужно удалить первые несколько символов, которым предшествует специальный символ типа #
, это хороший вариант:
UPDATE tblInvalidID
SET [ColumnName] =stuff(ColumnName, 1, charindex('#', ColumnName), ' ')
Верхний ответ имеет неожиданное поведение, когда длина строки меньше ожидаемой, поскольку передача отрицательных значений в 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