2010-05-13 2 views
1

У меня есть база данных с полем Field1, которое содержит 100 nchars за запись. Каждый раз, когда я добавить значение, оно сохраняется как:Вставка строк без трейлинг-пространств SQL

"value  (100-ValueLength Spaces)  " 

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

if (value == "Example") 

из-за всех пустых пространств после строки. Как я могу получить его, чтобы хранимые значения не имели все эти конечные пробелы?

+0

Какой вкус SQL? – Jon

+0

Не уверен, хотя я думаю, что это просто SQL Я использую Microsoft SQL Server Management Studio 2008, если это вообще помогает. – sooprise

ответ

7

Если вы хотите строку переменной длины, используйте nvarchar(100) вместо nchar(100). У более позднего всегда есть 100 символов, первый может иметь до 100 символов, но не заполняет пространство.

+0

Получил это. Когда я начал строить свою базу данных, я не знал разницы между nchar и nvarchar и решил использовать nchar, и теперь я понимаю, какую ошибку я сделал. – sooprise

3

Используйте функции sql LTRIM и RTRIM при вставке.

+0

Я использую LINQ для вставки, есть ли LINQ, эквивалентный тому, о чем вы говорите? – sooprise

+1

Затем просто примените Trim к строке, в этом случае нет необходимости использовать функции sql. – thelost

2

Можете ли вы использовать nvarchar, так что туда добавляется дополнение, если вы не отвечаете требуемой длине строки. Если так, что может быть лучше, то вам постоянно нужно подрезать строку.

+0

Я только что прочитал разницу между nvarchar и nchar. Я попытаюсь реализовать этот тип поля и посмотреть, поможет ли это. – sooprise

Смежные вопросы