powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / можно ли найти нужный текст в бинарном виде в поле Image
21 сообщений из 21, страница 1 из 1
можно ли найти нужный текст в бинарном виде в поле Image
    #39917976
erleug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Подскажите, есть таблица с полем Text. Перевожу текст в бинарный вид

Код: xml
1.
2.
3.
4.
5.
6.
USE pubs;  
GO  
SELECT pub_id, TEXTPTR(pr_info)
FROM pub_info 
ORDER BY pub_id;  
GO



В тексте есть слово 'This', к примеру, нужно его найти. Не пойму как можно это сделать. Кастирую слово в бинарный вид
Код: xml
1.
cast(N'This' as varbinary(40)

, как теперь его сравнить с текстом, и чтобы к примеру вывело айдишку, где в тексте встречается это слово

П.С. в заглавии темы ошибся с типом поля)
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39917985
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
erleug,

Может наоборот

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DECLARE @text VARBINARY(MAX)= CONVERT(VARBINARY(MAX), 'Где-то здесь должно быть слово "this"');

SELECT 
       a.[text]
     , CHARINDEX('this', a.[text]) AS [index]
     , @text AS                       [bin]
FROM
     (VALUES( 
             CONVERT(VARCHAR(MAX), @text)
             )) AS a([text]);
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39917995
erleug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
entrypoint,
мне нужно сравнить с текстом который в поле таблицы, таким способом я же не смогу сконвертировать поле таблицы и немного не поняли, по поводу айдишки, всмісле вівело поле айди, к которому относится текст, где встречается данное слово, а не индекс
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39917997
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
erleug
entrypoint,
мне нужно сравнить с текстом который в поле таблицы, таким способом я же не смогу сконвертировать поле таблицы

почему?
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39918001
erleug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser,
convert содержит парметры типа данных, в который переводим, и выражение, ведь так? Может конечно можно выгрузить и кастировать все поле, но я не сталкивался с таким, если подскажете буду благодарен
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39918008
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
erleug
entrypoint,
мне нужно сравнить с текстом который в поле таблицы, таким способом я же не смогу сконвертировать поле таблицы и немного не поняли, по поводу айдишки, всмісле вівело поле айди, к которому относится текст, где встречается данное слово, а не индекс


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DECLARE @t AS TABLE(id INT NOT NULL, [text] IMAGE NOT NULL);

INSERT INTO @t([id], [text])
SELECT 1, CONVERT(IMAGE, 'Где-то здесь должно быть слово "this"') UNION ALL 
SELECT 2, CONVERT(IMAGE, 'Где-то здесь должно быть слово "thi"') UNION ALL 
SELECT 3, CONVERT(IMAGE, 'Где-то здесь должно быть слово "th"') UNION ALL 
SELECT 4, CONVERT(IMAGE, 'Где-то здесь должно быть слово "t"') UNION ALL 
SELECT 5, CONVERT(IMAGE, 'Где-то здесь должно быть слово "this"')

SELECT 
       id
FROM 
     @t
WHERE CONVERT(VARCHAR(MAX), CONVERT(VARBINARY(MAX), [text])) LIKE '%this%'; 	
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39918010
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
erleug
Перевожу текст в бинарный вид
TEXTPTR(pr_info) - это не бинарный вид.
erleug
В тексте есть слово 'This', к примеру, нужно его найти. Не пойму как можно это сделать.
Код: sql
1.
2.
3.
4.
SELECT pub_id, pr_info
FROM pub_info 
WHERE pr_info like '%This%'
ORDER BY pub_id;
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39918019
erleug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
entrypoint,

да, спасибо, первый ваш вариант тоже немного переделал для другого вопроса
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39918023
erleug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,
двоичный, ошибся
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39918027
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
erleug
invm,
двоичный, ошибся

это и не бинарный и не двоичный вид, это просто указатель.
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39918256
erleug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex, как это просто указатель? он же возвращает значение в varbinary
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39918496
erleug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
entrypoint,
еще один вопрос, в чем может быть проблема, когда сравниваю со словом на англ раскладке, все отлично находит. Когда в поле загружаю документ с русским текстом и сравниваю со словом на русской раскладке совпадений уже нету.
Я так понимаю проблема скорее в кодировке? указываю utf-8
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39918509
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
erleug
msLex, как это просто указатель? он же возвращает значение в varbinary

справку почитайте
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39918547
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
erleug
как это просто указатель? он же возвращает значение в varbinary
Указатель, написано же в хелпе: "TEXTPTR возвращает указатель для обрабатываемого текста"
Как можно не смотреть применяемые функции в справке, откуда вы их имена берёте, и как понимаете, что они делают? Может, TEXTPTR возвращает площадь круга, откуда вы знаете?
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39918548
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
erleug
Когда в поле загружаю документ с русским текстом и сравниваю со словом на русской раскладке совпадений уже нету.
Очевидно же, какая то ошибка. Либо в вашем коде, либо данные неправильно загружены.

Хотя нет, проблем с кодировкой не может быть, вы же посмотрели, что там в таблице, прежде чем делать поисковые запросы?
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39918993
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
erleug
entrypoint,
еще один вопрос, в чем может быть проблема, когда сравниваю со словом на англ раскладке, все отлично находит. Когда в поле загружаю документ с русским текстом и сравниваю со словом на русской раскладке совпадений уже нету.
Я так понимаю проблема скорее в кодировке? указываю utf-8

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
DECLARE @t AS TABLE(id INT NOT NULL, [text] IMAGE NOT NULL);

INSERT INTO @t([id], [text])
SELECT 1,  CONVERT(IMAGE, CONVERT(VARBINARY(MAX), N'漢字 Где-то здесь должно быть слово "this"')) UNION ALL 
SELECT 2,  CONVERT(IMAGE, CONVERT(VARBINARY(MAX), N'漢 Где-то здесь должно быть слово "thi"')) UNION ALL 
SELECT 3,  CONVERT(IMAGE, CONVERT(VARBINARY(MAX), N'字 Где-то здесь должно быть слово "th"')) UNION ALL 
SELECT 4,  CONVERT(IMAGE, CONVERT(VARBINARY(MAX), N'Где-то здесь должно быть слово "t"')) UNION ALL 
SELECT 5,  CONVERT(IMAGE, CONVERT(VARBINARY(MAX), N'漢字 Где-то здесь должно быть слово "this"'))

SELECT 
       id
FROM 
     @t
WHERE CONVERT(NVARCHAR(MAX), CONVERT(VARBINARY(MAX), [text])) LIKE N'漢字%';


Смотрите приложенный файл, там поиск иероглифов
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39919040
erleug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
entrypoint,

по вашему примеру все работает.
По своему уже пробую вставить новую строку с данными.
Код: xml
1.
2.
insert into sta_Messages(SetDate,SetUser_id,GetUser_id,GetDate,GetText,GetStatus,File_Name,File_Ext,File_Content,File_GetDate)
values(CAST(GETDATE() AS BINARY(8)), 1, 5, CAST(GETDATE() AS BINARY(8)), null, null, 'File', 'doc', CONVERT(IMAGE, CONVERT(VARBINARY(MAX), N'Регистрация Где-то здесь должно быть слово "this"')), null)



и пробую получить поле содержащее слово "Регистрация"
Код: html
1.
2.
3.
SELECT id
FROM sta_Messages
WHERE CONVERT(VARCHAR(MAX), CONVERT(VARBINARY(MAX), [File_Content])) LIKE N'%Регистрация%'; 



По итогу ничего не находит. Но! Когда уже пробую найти, к примеру слово "this"
Код: html
1.
2.
3.
SELECT id
FROM sta_Messages
WHERE CONVERT(VARCHAR(MAX), CONVERT(VARBINARY(MAX), [File_Content])) LIKE N'%this%'; 



уже строку находит.
Так же работает и уже с загруженными данными с файлов в поле File_Content. На англ находит, на русском нет.
В прикрепленном файле выложил структуру таблицы, и результат запроса. Что-то видимо я недопонимаю, простите(
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39919051
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39919058
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
erleug,

Посмотрите в последнем моем примере все VARCHAR заменены на NVARCHAR (Юникод), а у Вас
авторSELECT id
FROM sta_Messages
WHERE CONVERT( VARCHAR(MAX) , CONVERT(VARBINARY(MAX), [File_Content])) LIKE N'%Регистрация%';

просто текст а не Юникод,
сохраняете Юникод исользуя префикс N', а возвращаете просто текст
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39919064
erleug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
entrypoint,

о боги, моя невнимательность, спасибо, так работает
но с записей которые были уже давно внесены не находит, видимо проблема в том, как вносились данные
...
Рейтинг: 0 / 0
можно ли найти нужный текст в бинарном виде в поле Image
    #39919066
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
erleug
entrypoint,

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


Конечно, старые данные могли и испортить
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / можно ли найти нужный текст в бинарном виде в поле Image
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]