Обрезка T-SQL не работает - оставьте пробелы в результате - PullRequest
2 голосов
/ 15 июня 2011

У меня есть функция обрезки, которая применяет ltrim и rtrim

CREATE FUNCTION dbo.TRIM(@string VARCHAR(MAX))
RETURNS VARCHAR(MAX)
BEGIN
RETURN LTRIM(RTRIM(@string))
END
GO

Я делаю следующий запрос:

SELECT distinct dbo.trim([subject]) as subject
FROM [DISTR]

У результата есть такие строки:

"A"
"A  "
"B"
...

Я думал, что символы thoose могут быть не пробелами, но когда я получил код ascii, он возвращает 32, который является кодом для пробела.

Мое единственное предположение состоит в том, что мне пришлось изменить структуру базы данных на: SQL_Latin1_General_CP1_CI_AI

Может ли это быть проблемой? Есть идеи? Спасибо

1 Ответ

1 голос
/ 28 июня 2011

Возможно, ваше поле содержит больше пробелов. Помните, что "" может быть пробелом, табуляцией и многими другими "пустыми" символами . Можно сопоставить его, используя ASCII или создав CLR-реализацию отделки, которая использует регулярные выражения

...