Er. Shailesh Ответов: 3

Как удалить начальные и конечные запятые из строки в SQL server?


Я хочу удалить все запятые, которые появляются в начале строки и в конце строки в SQL SERVER. Я НЕ ХОЧУ УДАЛЯТЬ ЗАПЯТЫЕ, КОТОРЫЕ ПОЯВЛЯЮТСЯ ВНУТРИ СТРОКИ.
Моя строка, как-
",,test1,test2 tag,test3 tag,,,"

Требуется o/p=>
"test1,test2 tag,test3 tag"

Пожалуйста, помогите мне. Спасибо.

Что я уже пробовал:

SELECT REPLACE(LTRIM(RTRIM(REPLACE(',,test1,test2 tag,test3 tag,', ',', ''))), '', ',')

Но это дает o\p=>
"test1test2 tagtest3 tag"

что неверно, так как он удаляет все запятые, которые также находятся внутри строки.

3 Ответов

Рейтинг:
2

raksha.dokania

Выберите реверс(подстрока(реверс(подстрока(@сведения, функция patindex('%[^, ]%', @данных),99999)), функция patindex('%[^, ]%', реверс(подстрока(@сведения, функция patindex('%[^, ]%', @данных),99999))),99999));


CHill60

Эта проблема была решена 3 года назад. Вы воскресили старый вопрос, скопировав чью-то работу (решение венделиуса 2). Не делайте этого.

Рейтинг:
14

Wendelius

Есть несколько способов сделать это. Например, вы можете использовать небольшой блок T-SQL, как это

BEGIN 
   DECLARE  @data VARCHAR(100);
   SET @data = ',,test1,test2 tag,test3 tag,,,';
   SELECT REVERSE(SUBSTRING(REVERSE(SUBSTRING(@data, PATINDEX('%[^,]%', @data),99999)), PATINDEX('%[^,]%', REVERSE(SUBSTRING(@data, PATINDEX('%[^,]%', @data),99999))),99999));
END;

Или встроить логику в оператор select, например
SELECT REVERSE(SUBSTRING(REVERSE(SUBSTRING(MyColumn, PATINDEX('%[^,]%', MyColumn),99999)), PATINDEX('%[^,]%', REVERSE(SUBSTRING(MyColumn, PATINDEX('%[^,]%', MyColumn),99999))),99999))
FROM MyTable

Однако проще всего было бы создать небольшую функцию для этой задачи, например TrimChar для удаления нужного символа[^]


Рейтинг:
0

Karthik_Mahalingam

проверить это Символ обрезки SQL Server[^]