Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/27: Рейтинг темы: голосов - 27, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 20.01.2011
Сообщений: 40

Поиск подстроки

31.01.2011, 20:18. Показов 5690. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пожалуйста, срочно нужна розвязка. Не хочет искать.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
 
ALTER PROCEDURE [dbo].[FindByText]
@Text NVarChar(MAX)
AS
BEGIN
 
    SET NOCOUNT ON;
 
    SELECT (id) FROM dbo.Articles
    WHERE [text] = @Text;
 
END
переменную передаю. Вот то что в проге
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public static List<int> SearchByText(String ConStr, String text)
        {
            List<int> r = new List<int>();
            SqlConnection Connection = new SqlConnection(ConStr);
            SqlCommand Cmd = new SqlCommand("FindByText", Connection);
            Cmd.CommandType = System.Data.CommandType.StoredProcedure;
            Cmd.Parameters.Add("@Text", System.Data.SqlDbType.NVarChar).Value = text;
            try
            {
                Connection.Open();
                SqlDataReader Reader = Cmd.ExecuteReader();
                while (Reader.Read())
                {
                    r.Add(Reader.GetInt32(0));
                }
                Reader.Close();
                Connection.Close();
                return r;
            }
            catch (SqlException e)
            {
                MessageBox.Show(e.Message);
                Connection.Close();
                return r;
            }
            catch
            {
                Connection.Close();
                return r;
            }
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.01.2011, 20:18
Ответы с готовыми решениями:

Поиск подстроки внутри данной строки, замена найденной подстроки на другую строку
Выполнить поиск подстроки внутри данной строки,замену найденной подстроки на другую строку Пример Исходная строка: aaaabbbaaa ...

Поиск подстроки в строке и вывод подстроки
Удалите пожалуйста, разобрался

Поиск подстроки
Здравствуйте: У меня пару вопросов. У меня в списке занесено несколько сотен слов. Командой FINSTR в буфер обмена надо найти и вывести...

12
10 / 10 / 1
Регистрация: 04.09.2010
Сообщений: 25
01.02.2011, 06:09
T-SQL
1
2
SELECT (id) FROM dbo.Articles
        WHERE ltrim(rtrim([text])) = @Text;
иначе сравнивает с пробелами в конце поля.
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
01.02.2011, 16:34
Цитата Сообщение от Firsov Alexey Посмотреть сообщение
T-SQL
1
2
SELECT (id) FROM dbo.Articles
        WHERE ltrim(rtrim([text])) = @Text;
иначе сравнивает с пробелами в конце поля.
Сказки.
Какого типа dbo.Articles.[text]?
И какой COLLATE у базы и этого поля?
Есть ли различие в регистре букв искомого поля и в переменной?
Бывают буквы латиницы и кириллицы с одинаковым очертанием. Это исключается?
0
 Аватар для Humanitis
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430
01.02.2011, 17:58
C#
1
 SqlCommand Cmd = new SqlCommand("FindByText", Connection);
А это вроде как запуск процедуры?
Проверьте C# код
0
0 / 0 / 0
Регистрация: 20.01.2011
Сообщений: 40
01.02.2011, 22:05  [ТС]
Цитата Сообщение от Humanitis Посмотреть сообщение
C#
1
 SqlCommand Cmd = new SqlCommand("FindByText", Connection);
А это вроде как запуск процедуры?
Проверьте C# код
С шарпом всё норм, т.к. имеются ещё функции и они работают. Тут же оно тупо не заходит в
C#
1
2
3
4
while (Reader.Read())
                {
                    r.Add(Reader.GetInt32(0));
                }
Какого типа dbo.Articles.[text]?
NVarChar
Есть ли различие в регистре букв искомого поля и в переменной?
Бывают буквы латиницы и кириллицы с одинаковым очертанием. Это исключается?
мне не нужно всяких прибамбасов, мне нужно что б просто искался текст. Текст будет кириллицей
0
10 / 10 / 1
Регистрация: 04.09.2010
Сообщений: 25
02.02.2011, 00:52
Сказки.
Да что вы говорите? Во первых, все зависит от версии SQL сервера. Где то мое утверждение верно, где то нет.

Какого типа dbo.Articles.[text]?
И какой COLLATE у базы и этого поля?
Есть ли различие в регистре букв искомого поля и в переменной?
Бывают буквы латиницы и кириллицы с одинаковым очертанием. Это исключается?
Все верно, это не исключается. Если регистр не важен, а опции SQL неизвестны, можно в запрос дописать преобразование к верхнему регистру при сравнении:
T-SQL
1
UPPER(LTRIM(RTRIM([TEXT]))) = UPPER(LTRIM(RTRIM(@TEXT)))
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
02.02.2011, 09:20
Цитата Сообщение от Firsov Alexey Посмотреть сообщение
Да что вы говорите? Во первых, все зависит от версии SQL сервера. Где то мое утверждение верно, где то нет.
Это сказки для любой версии. Чтобы учитывался хвостовой пробел надо ещё очень постараться.
Цитата Сообщение от Firsov Alexey Посмотреть сообщение
Все верно, это не исключается. Если регистр не важен, а опции SQL неизвестны, можно в запрос дописать преобразование к верхнему регистру при сравнении:
T-SQL
1
UPPER(LTRIM(RTRIM([TEXT]))) = UPPER(LTRIM(RTRIM(@TEXT)))
SQL
1
LTRIM([text]) = @Text COLLATE Cyrillic_General_CI_AI;
0
10 / 10 / 1
Регистрация: 04.09.2010
Сообщений: 25
02.02.2011, 09:53
iap, я конечно, очень рад, что ты хорошо разбираешься в SQL, но не надо так упорствовать в навязывании своего мнения В конечном итоге мой и твой примеры отработают одинаково. Принципы сверки разные - результат один
0
 Аватар для Humanitis
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430
02.02.2011, 10:06
Цитата Сообщение от Yngvin Посмотреть сообщение
С шарпом всё норм, т.к. имеются ещё функции и они работают.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
 
ALTER PROCEDURE [dbo].[FindByText]
@Text NVarChar(MAX)
AS
BEGIN
 DECLARE @RESULT INT
        SET NOCOUNT ON;
 
        SELECT @RESULT(id) FROM dbo.Articles
        WHERE [text] = @Text;
 RETURN @RESULT
END
C#
1
SqlCommand Cmd = new SqlCommand("DECLARE @result INT;execute @result=FindByText;select @result;", Connection);
0
0 / 0 / 0
Регистрация: 20.01.2011
Сообщений: 40
02.02.2011, 19:52  [ТС]
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
 
ALTER PROCEDURE [dbo].[FindByText]
@Text NVarChar(MAX)
AS
BEGIN
 DECLARE @RESULT INT
        SET NOCOUNT ON;
 
        SELECT @RESULT(id) FROM dbo.Articles
        WHERE [text] = @Text;
 RETURN @RESULT
END
Ошибку выдаёт для @result(id)

Добавлено через 3 минуты
Пробовал все варианты - не работает
0
 Аватар для Humanitis
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430
03.02.2011, 10:31
SQL
1
SELECT @RESULT=(id) FROM dbo.Articles
знак равенства забыл.
Но главное не это. Я может и ошибаюсь, но не видел, чтоб процедуру вызывали подобным образом
C#
1
SqlCommand Cmd = new SqlCommand("FindByText", Connection);
0
0 / 0 / 0
Регистрация: 20.01.2011
Сообщений: 40
03.02.2011, 19:19  [ТС]
Всё, проблему решил
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
 
ALTER PROCEDURE [dbo].[FindByText]
@Text NVarChar(MAX)
AS
BEGIN
 
    SET NOCOUNT ON;
 
    SELECT (name) FROM dbo.Artic
        WHERE [TEXTforsearch] LIKE '%'+@TEXT+'%'
ORDER BY (ID) DESC;
 
END
Я может и ошибаюсь, но не видел, чтоб процедуру вызывали подобным образом
У меня работает, так что возьмите на заметку)))
0
10 / 10 / 1
Регистрация: 04.09.2010
Сообщений: 25
04.02.2011, 00:39
T-SQL
1
WHERE [TEXTforsearch] LIKE '%'+@TEXT+'%'
Знак % в начале поиска лишает тебя возможности использовать индексы при поиске,т.к. неизвестно, сколько символов в начале тексте. Если объем базы небольшой, то можно и так. В противном случае поиск будет тормозить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.02.2011, 00:39
Помогаю со студенческими работами здесь

поиск подстроки
Постройте автомат для поиска подстроки Р=aabab и продемонстрируйте его работу на тексте Т=aaababaabaababaab. Нарисуйте схему переходов. Где...

Поиск подстроки
Всем доброго времени суток) Помогите опытные люди) такая ситуация: Имею текст XML В нем вложения по типу &lt;OK&gt; ...

Поиск подстроки
Эта программа написана чтобы искало буквы....а как написать чтобы искало количество слова например &quot; kag &quot; ...

Поиск подстроки
Здравствуйте! Нужно проверить такие условия: если подстрока находится в конце строки; если подстрока = строке; если перед...

Поиск подстроки.
Здравствуйте, помогите пожалуйста разобраться с такой задачей, после каждого слова в предложении, которое оканчивается определенным...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru