Member 14603071 Ответов: 2

Как найти значение из базы данных SQL с помощью %


например, мне нужны данные из pname, который является hassan, но я хочу написать hasan или hsssan или любое слово, начинающееся с h в коде textbox2, должно чакнуть первое заклинание textbox2 и найти соответствующие значения.

и хотите показать их в datagridview

я попробовал приведенный выше код, но он ищет значение, начинающееся со значения textbox2

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

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

SqlDataAdapter sqlDa = new SqlDataAdapter("SELECT * FROM stock  WHERE pname LIKE @pname", con);
              sqlDa.SelectCommand.Parameters.AddWithValue("@pname", textBox2.Text + "%");

2 Ответов

Рейтинг:
1

Richard Deeming

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

Самое близкое, что вы можете получить, - это вычислить разницу между функция Soundex[^] коды для значения базы данных и поискового запроса. SQL Server имеет встроенную функцию для этого, которая возвращает значение из 0 к 4, где 0 значит, совсем не похожи, а 4 средства практически идентичны.

SqlDataAdapter sqlDa = new SqlDataAdapter("SELECT * FROM stock  WHERE DIFFERENCE(pname, @pname) > 1", con);
sqlDa.SelectCommand.Parameters.AddWithValue("@pname", textBox2.Text);
Разница (Transact-SQL) - SQL Server | Microsoft Docs[^]

NB: Soundex специально основан на английском произношении. В зависимости от ваших пользователей, ваши результаты могут отличаться.

Существуют и другие методы сравнения похожих по звучанию строк, но ни один из них не встроен в SQL Server. Например, PostgreSQL предлагает:
PostgreSQL: документация: 9.1: fuzzystrmatch[^]