Как написать SQL-запрос для удаления первого элемента (самого первого символа) пути - PullRequest
0 голосов
/ 20 мая 2019

У меня есть таблица, содержащая столбец для изображений, в котором хранится ссылка на изображения.

Пример выглядит следующим образом:

\\Images/image1.jpg

Теперь предположим, что в моей базе данных содержится более 1000 записей.для 1000 изображений, которые работают нормально, но теперь из-за некоторых изменений требований я должен обновить ссылки.

Я хочу удалить первый слеш из всех 1000 записей с помощью SQL-запроса.

Теперь оно хранится так:

\\Images/image1.jpg

, и я хочу преобразовать его в

\Images/image1.jpg

Один из подходов - перейти к 1000 записям и удалить их одну за другой, чтослишком много времени, в качестве альтернативы, что может быть SQL-запрос, который может быть запущен через SSMS?

Ответы [ 5 ]

2 голосов
/ 20 мая 2019

Вы можете использовать REPLACE, чтобы сделать это:

update yourTable
set yourColumn = replace(yourColumn,'\\','\')
2 голосов
/ 20 мая 2019

Чтобы обновить только те значения, которые начинаются с "\\", вы можете сделать

UPDATE someTable SET col = REPLACE(col, '\\%', '\')
1 голос
/ 20 мая 2019

Это должно сделать это на Ms SQL.

SELECT SUBSTRING(path, 2, LEN(path) - 1) FROM yourtable

EDIT:

UPDATE yourtable
SET path = SUBSTRING(path, 2, LEN(path) - 1)
WHERE SUBSTRING(path, 1, 2) = '\\'
0 голосов
/ 20 мая 2019

Я бы не использовал замену для этой цели!Вы хотите удалить первую косую черту, а replace() заменяет все совпадающие значения везде в строке.

Кроме того, SQL Server имеет очень простую функцию для этого:

update t
    set col = stuff(col, 1, 1, '')
    where col like '\\%';
0 голосов
/ 20 мая 2019

Если вы просто хотите получить свой набор данных таким образом, попробуйте использовать функцию RIGHT в вашем запросе выбора;ваш запрос должен выглядеть примерно так:

SELECT RIGHT(path, LEN(path)-1) FROM yourtable

Если вы хотите обновить таблицу с обновленными значениями, чем использовать запрос UPDATE, он должен выглядеть примерно так;

UPDATE yourtable SET path = RIGHT(path, LEN(path)-1) FROM yourtable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...