sql поле содержит текст

SQL выберите, где поле содержит слова

Мне нужен выбор, который вернет такие результаты:

и мне нужны все результаты, т. е. это включает строки с «word2 word3 word1» или «word1 word3 word2» или любой другой комбинацией из трех.

все слова должны быть в результате.

14 ответов

довольно медленный, но рабочий метод для включения любой слова:

Если вам нужно все слова, чтобы присутствовать, используйте это:

Если вы хотите что-то быстрее, то вам нужно заглянуть в полнотекстовый поиск, и это очень специфично для каждого типа базы данных.

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

кроме того, имейте в виду, что это и метод в принятом ответе охватывают только соответствие подстроки, а не сопоставление слов. Так, например, строка ‘word1word2word3’ все равно совпадет.

функции

запрос

обновление

для выбора фраз, используйте двойные кавычки, как:

п.з. вы должны сначала включить полнотекстовый поиск по таблице перед использованием содержит ключевое слово. дополнительные сведения см. здесь https://docs.microsoft.com/en-us/sql/relational-databases/search/get-started-with-full-text-search

изменить OR to AND на основе edit to question.

если вы просто хотите найти совпадение.

чтобы получить точное соответствие. Пример (‘;a;ab;ac;’,’;b;’) не будет соответствовать.

Если вы используете База Данных Oracle тогда вы можете достичь этого, используя содержит запрос. Содержит запросы быстрее, чем запрос like.

Если вам нужны все слова

Если вам нужно любое из слов

содержит индекс потребности типа контекст на своей колонке.

почему бы вместо этого не использовать «in»?

попробуйте использовать «tesarus search» в полнотекстовом индексе в MS SQL Server. Это намного лучше, чем использовать «%» в поиске, если у вас есть миллионы записей. tesarus имеют небольшое количество потребления памяти, чем другие. попробуйте найти эту функцию:)

лучший способ это сделать полнотекстовый индекс для столбца в таблице и используйте contain вместо LIKE

‘. Например, следующие запросы дадут нам все столбцы, которые конкретно включают word1, word2 и word3.

кроме того, CONTAINSTABLE возвращает ранг для каждого документа на основе близости «word1», «word2» и «word3». Например, если документ содержит предложение «word1-это word2 и word3», его ранжирование будет высокий, потому что термины ближе друг к другу, чем в других документах.

еще одна вещь, которую я хотел бы добавить, это то, что мы также можем использовать proximity_term для поиска столбцов, где слова находятся внутри определенного расстояния между ними внутри фразы столбца.

Источник

Предикат SQL LIKE для поиска строки с заданными символами

Применение предиката LIKE с простыми условиями

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

sql поле содержит текст. Смотреть фото sql поле содержит текст. Смотреть картинку sql поле содержит текст. Картинка про sql поле содержит текст. Фото sql поле содержит текст

Пример 1. Вывести спектакли, названия которых начинаются со слова ‘King’.

Пишем запрос в котором с предикатом LIKE используем выражение ‘King%’:

В результате выполнения запроса будет выведена таблица с одной строкой:

Пример 2. Вывести спектакли, названия которых начинаются с буквы ‘O’ и содержат 7 символов.

Пишем запрос в котором с предикатом LIKE используем выражение ‘O______’ (подчёркивание проставлено 6 раз):

В результате выполнения запроса будет выведена таблица с одной строкой:

Пример 3. Вывести спектакли, названия которых заканчиваются буквой ‘a’.

Пишем запрос в котором с предикатом LIKE используем выражение ‘%a’ (подчёркивание проставлено 6 раз):

В результате выполнения запроса будет выведена таблица со следующими строками:

Matilda
Antony and Cleopatra

Пример 4. Вывести спектакли, в названии которых содержится слово «War», например, такие как «The War That Never Ends», «The Wars of the Roses», но не «Howards End».

Пишем запрос в котором с предикатом LIKE используем выражение ‘%War%’:

В результате выполнения запроса будет выведена таблица:

The Wars of the Roses
The War That Never Ends

Пример 5. Вывести спектакли, в названиях которых содержится не менее пяти пробелов.

Пишем запрос в котором с предикатом LIKE используем выражение ‘% % % % % %’:

В результате выполнения запроса будет выведена таблица:

Источник

Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Базы данных

SQL условие LIKE

В этом учебном материале вы узнаете, как использовать SQL условие LIKE (для сопоставления с шаблоном) с синтаксисом и примерами.

Описание

SQL условие LIKE позволяет использовать подстановочные символы для сопоставления с шаблоном в запросе. Условие LIKE используется в предложении WHERE оператора SELECT, INSERT, UPDATE или DELETE.

Синтаксис

Синтаксис для условия LIKE в SQL.

Параметры или аргумент

customer_idfirst_namelast_namefavorite_website
4000JustinBiebergoogle.com
5000SelenaGomezbing.com
6000MilaKunisyahoo.com
7000TomCruiseoracle.com
8000JohnnyDeppNULL
9000RussellCrowegoogle.com

Введите следующий SQL оператор.

Будет выбрано 2 записи. Вот результаты, которые вы должны получить.

customer_idfirst_namelast_namefavorite_website
7000TomCruiseoracle.com
9000RussellCrowegoogle.com

Использование нескольких подстановочных символов % в условии LIKE

Вы также можете использовать подстановочный символ % несколько раз с условием LIKE.
Используя ту же таблицу customers со следующими данными:

customer_idfirst_namelast_namefavorite_website
4000JustinBiebergoogle.com
5000SelenaGomezbing.com
6000MilaKunisyahoo.com
7000TomCruiseoracle.com
8000JohnnyDeppNULL
9000RussellCrowegoogle.com

Будет выбрано 3 записей. Вот результаты, которые вы должны получить.

last_name
Bieber
Gomez
Depp

В этом примере фамилии Bieber, Gomez и Depp содержат букву ‘е’.

category_idcategory_name
25Deli
50Produce
75Bakery
100General Merchandise
125Technology

Будет выбрано 2 записи. Вот результаты, которые вы должны получить.

category_idcategory_name
25Deli
75Bakery

Использование нескольких подстановочных символов _ в условии LIKE

Если вы хотите сопоставить трехзначное значение, заканчивающееся на «5», вам нужно будет использовать подстановочный символ _ два раза. Вы можете изменить свой запрос следующим образом.

Теперь вы вернете значение category_id равное 125.

category_idcategory_name
125Technology

Далее давайте рассмотрим пример использования оператора NOT с условием LIKE.
В этом примере у нас есть таблица suppliers со следующими данными:

supplier_idsupplier_namecitystate
100YandexMoscowRussian
200GoogleLansingMichigan
300OracleRedwood CityCalifornia
400BingRedmondWashington
500YahooSunnyvaleWashington
600DuckDuckGoPaoliPennsylvania
700QwantParisFrance
800FacebookMenlo ParkCalifornia
900Electronic ArtsSan FranciscoCalifornia

Будут выбраны 4 записи. Вот результаты, которые вы должны получить.

supplier_idsupplier_namecitystate
100YandexMoscowRussian
300OracleRedwood CityCalifornia
400BingRedmondWashington
700QwantParisFrance

В этом примере в таблице suppliers есть четыре записи, в которых supplier_name не содержит литеру ‘o’.

test_idtest_value
110%
225%
3100
499

Источник

SQL SELECT WHERE поле содержит слова

Мне нужно выбрать, который будет возвращать результаты, как это:

И мне нужны все результаты, т. Е. Сюда входят строки с «word2 word3 word1» или «word1 word3 word2» или любой другой комбинацией из трех.

Все слова должны быть в результате.

Довольно медленный, но рабочий метод для включения любого из слов:

Если вам нужны все слова, используйте это:

Если вы хотите что-то быстрее, вам нужно изучить полнотекстовый поиск, и это очень специфично для каждого типа базы данных.

Обратите внимание, что если вы используете, LIKE чтобы определить, является ли строка подстрокой другой строки, вы должны экранировать символы, соответствующие шаблону в вашей строке поиска.

Кроме того, имейте в виду, что этот и метод в принятом ответе охватывают только сопоставление подстрок, а не сопоставление слов. Так, например, строка ‘word1word2word3’ все равно будет соответствовать.

функция

запрос

ОБНОВИТЬ

Для выбора фраз используйте двойные кавычки, такие как:

ps вы должны сначала включить полнотекстовый поиск по таблице, прежде чем использовать содержит ключевое слово. Подробнее см. здесь https://docs.microsoft.com/en-us/sql/relational-databases/search/get-started-with-full-text-search.

Изменено OR на AND основе редактирования вопроса.

Если вам нужны все слова

Если вам нужно любое из слов

Содержит индекс необходимости типа КОНТЕКСТ на вашем столбце.

Если вы просто хотите найти совпадение.

Чтобы получить точное совпадение. Пример (‘;a;ab;ac;’,’;b;’) не получит совпадение.

попробуйте использовать «поиск по tesarus» в полнотекстовом индексе в MS SQL Server. Это гораздо лучше, чем использовать «%» в поиске, если у вас есть миллионы записей. Tesarus имеют небольшое потребление памяти, чем другие. попробуйте поискать эту функцию 🙂

лучший способ сделать полнотекстовый индекс для столбца в таблице и использовать вместо LIKE содержать

почему бы не использовать вместо «в»?

‘. Например, следующие запросы дадут нам все столбцы, которые конкретно включают в себя word1, word2 и word3.

В идеале это должно быть сделано с помощью полнотекстового поиска сервера SQL при использовании. Однако, если вы по какой-то причине не можете работать с вашей БД, вот решение, требующее высокой производительности:

Источник

LIKE (Transact-SQL)

sql поле содержит текст. Смотреть фото sql поле содержит текст. Смотреть картинку sql поле содержит текст. Картинка про sql поле содержит текст. Фото sql поле содержит текстСинтаксические обозначения в Transact-SQL

Синтаксис

ESCAPE и STRING_ESCAPE сейчас не поддерживаются в Azure Synapse Analytics и Система платформы аналитики (PDW).

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

match_expression
Любое допустимое выражение expression символьного типа данных.

pattern
Конкретная строка символов для поиска в match_expression может содержать следующие допустимые символы-шаблоны. Длина значения pattern не может превышать 8000 байт.

Символ-шаблонОписаниеПример
%Любая строка, содержащая ноль или более символов.Инструкция WHERE Название LIKE ‘%компьютер%’ выполняет поиск и выдает все названия книг, содержащие слово «компьютер».
_ (подчеркивание)Любой одиночный символ.Инструкция WHERE фамилия_автора LIKE ‘_етров’ выполняет поиск и выдает все имена, состоящие из шести букв и заканчивающиеся сочетанием «етров» (Петров, Ветров и т.п.).
[ ]Любой одиночный символ, содержащийся в диапазоне ([a-f]) или наборе ([abcdef]).Инструкция WHERE Фамилия_автора LIKE ‘[Л-С]омов’ выполняет поиск и выдает все фамилии авторов, заканчивающиеся на «омов» и начинающиеся на любую букву в промежутке от «Л» до «С», например Ломов, Ромов, Сомов и т.п. При выполнении операции поиска в диапазоне символы, включенные в диапазон, могут изменяться в зависимости от правил сортировки параметров сортировки.
[^]Любой одиночный символ, не содержащийся в диапазоне ([^a-f]) или наборе ([^abcdef]).Инструкция WHERE Фамилия_автора LIKE ‘ив[^а]%’ выполняет поиск и выдает все фамилии, начинающиеся на «ив», в которых третья буква отличается от «а».

escape_character
Символ, помещаемый перед символом-шаблоном для того, чтобы символ-шаблон рассматривался как обычный символ, а не как шаблон. Аргумент escape_character является символьным выражением, не имеющим значения по умолчанию и возвращающим результат в виде одного символа.

Типы результата

Boolean

Значение результата

Оператор LIKE возвращает значение TRUE, если аргумент match_expression совпадает с указанным аргументом pattern.

Комментарии

При использовании оператора LIKE для сравнения строк во внимание принимаются все символы строки-шаблона. К значимым символам также относятся начальные и конечные пробелы. Если операция сравнения в запросе должна вернуть все строки, содержащие строки LIKE ‘абв ‘ (с символом пробела на конце), то строка, содержащая «абв» (без пробела), не будет возвращена. Однако завершающие пробелы в выражении, с которым сравнивается шаблон, не учитываются. Если операция сравнения в запросе должна вернуть все строки, содержащие строки LIKE ‘абв’ (без знака пробела на конце), то будут возвращены все строки, содержащие «абв», как с завершающими пробелами, так и без них.

При сравнении строк с помощью оператора LIKE с использованием шаблона, содержащего тип данных char и varchar, могут возникнуть проблемы из-за методов хранения каждого типа данных. В ходе выполнения следующего примера локальная переменная char передается хранимой процедуре, а затем с помощью сравнения с шаблоном выполняется поиск всех сотрудников, чьи фамилии начинаются с указанной последовательности букв.

Процедура из следующего примера выполняется успешно, так как завершающие пробелы к переменной типа varchar не добавляются.

Совпадение с шаблоном с использованием оператора LIKE

Оператор LIKE поддерживает шаблоны в ASCII и Юникоде. Если все аргументы (match_expression, pattern и escape_character, если он указан) имеют символьный тип ASCII, то применяется шаблон ASCII. В случае, когда какой-либо из аргументов имеет тип данных Юникод, выполняется преобразование всех аргументов в Юникод и применяется шаблон Юникод. Если вы используете оператор LIKE с типом данных Юникода (nchar или nvarchar), завершающие пробелы учитываются в отличие от других типов данных (не Юникода). Работа оператора LIKE с данными в Юникоде совместима со стандартом ISO. Принцип работы оператора LIKE с данными ASCII совместим с более ранними версиями SQL Server.

Приведенные ниже примеры поясняют различия между результатами сравнения данных с шаблонами оператора LIKE, представленными в Юникоде и ASCII.

Операции сравнения с помощью оператора LIKE зависят от параметров сортировки. Дополнительные сведения см. в разделе COLLATE (Transact-SQL).

Использование символа-шаблона «%»

Если в операторе LIKE указать символ ‘5%’, то компонент Компонент Database Engine будет искать число «5», за которым следует любая строка с числом символов от нуля и больше.

Использование символов-шаблонов в качестве литералов

Символы-шаблоны могут быть использованы в качестве литералов. Чтобы использовать символ-шаблон в качестве литерала, его необходимо заключать в скобки. В следующей таблице представлены несколько примеров применения ключевого слова LIKE вместе с символами-шаблонами [ ].

СимволЗначение
LIKE ‘5[%]’5 %
LIKE ‘[_]n’_n
LIKE ‘[a-cdf]’a, b, c, d или f
LIKE ‘[-acdf]’-, a, b, c, d или f
LIKE ‘[ [ ]’[
LIKE ‘]’]
LIKE ‘abc[_]d%’abc_d и abc_de
LIKE ‘abc[def]’abcd, abce и abcf

Совпадение с шаблоном с помощью предложения ESCAPE

Если в шаблоне LIKE после escape-символа нет никакого символа, то шаблон является недопустимым и оператор LIKE возвращает значение FALSE. Если символ после escape-символа не является символом-шаблоном, то escape-символ игнорируется, а следующий символ рассматривается как обычный символ в шаблоне. К этим символам-шаблонам относятся: подчеркивание (_), процент (%) и левая квадратная скобка ([), в том случае, если они заключены в квадратные скобки. Escape-символы могут использоваться в квадратных скобках ([ ]), включая: знак вставки (^), дефис (-) и правую квадратную скобку (]).

Символ 0x0000 (char(0)) не определен в параметрах сортировки Windows, и его нельзя включать в LIKE.

Примеры

A. Применение оператора LIKE с символом-шаблоном %

Б. Применение оператора NOT LIKE с символом-шаблоном %

В. Применение предложения ESCAPE

Г. Использование символов-шаблонов [ ]

Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)

Д. Применение оператора LIKE с символом-шаблоном %

Е. Применение оператора NOT LIKE с символом-шаблоном %

Ж. Применение оператора LIKE с символом-шаблоном _

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *