Visual Studio VB. NET: запрос дает неожиданные результаты - PullRequest
0 голосов
/ 10 июля 2020

Я в Visual Studio 2013 работаю над настольным приложением VB. NET. Я добавил простой запрос к набору данных, который выглядит следующим образом:

SELECT ID, DateStamp, RegNum, Make, Model, Year
FROM TblWof
WHERE (Make LIKE '%' + @Param1 + '%')

вызывается с помощью:

Me.TblWofTableAdapter.FillByMaker(Me.WofManDBDataSet.TblWof, TextBox1.Text)

Если я укажу Honda в качестве параметра поиска, я получу все, что делает Honda, обратно в полученные результаты. Тем не мение; Если я дам H, или Hon, или da, я ничего не верну. Что происходит?

Определение столбца SQL Server для Make: nchar(10),

1 Ответ

0 голосов
/ 10 июля 2020

Очень редко nchar оказывается хорошим выбором. В вашем случае каждое значение ДОЛЖНО быть длиной 10 символов, что означает, что все, что не передается, будет дополнено пробелами. Я предполагаю, что то, что вы видите, связано с этим. Если вы измените тип данных на nvarchar, я не думаю, что вы столкнетесь с той же проблемой. Это также будет иметь то преимущество, что у вас не будет конечных пробелов в данных при их извлечении из базы данных.

Это может не иметь значения, но если вы собираетесь использовать тип данных Unicode для столбец, вам действительно следует использовать тип данных Unicode для всего, что вы объединяете с ним или сравниваете с ним, т.е.

SELECT ID, DateStamp, RegNum, Make, Model, Year
FROM TblWof
WHERE (Make LIKE N'%' + @Param1 + N'%')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...