Как получить похожие записи с использованием SQL - PullRequest
0 голосов
/ 30 мая 2019

Мне нужно написать SQL-запрос для получения аналогичных записей из таблицы. Он имеет 100 записей с разностью значений.Но некоторые записи имеют похожее имя. Подобные имена начинаются с заглавной или простой.

ex- Я хочу получить все похожие записи с похожими именами.

Student_no | student_Name | Subject   |class
  1        | Abc          | Java      | 1
  2        | Abc          | Java      | 1
  3        | xyz          | AngularJS | 2 
  4        | xyz          | AngularJS | 2
  5        | Abc Def      | SpringBoot| 3

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Используйте EXISTS и оператор LIKE:

select t.*
from tablename t
where exists (
  select 1 from tablename
  where
    Student_no <> t.Student_no
    and (
      student_Name like concat(t.student_Name, '%')
      or
      t.student_Name like concat(student_Name, '%')
    )
)

См. Демоверсию .Результаты:

| Student_no | student_Name | Subject    | class |
| ---------- | ------------ | ---------- | ----- |
| 1          | Abc          | Java       | 1     |
| 2          | Abc          | Java       | 1     |
| 3          | xyz          | AngularJS  | 2     |
| 4          | xyz          | AngularJS  | 2     |
| 5          | Abc Def      | SpringBoot | 3     |
0 голосов
/ 30 мая 2019

В вашем случае оператор типа:

SELECT * FROM TABLE WHERE UPPER(student_Name) like UPPER('xyz')

сместит все значения student_Name в верхний регистр, а затем извлечет все значения "XYZ" в верхнем регистре (или только все).

Если не все имена похожи на «xyz» (или некоторые «xyz1», «1_xyz» или «ABCXYZDEF»), вам необходимо использовать like с %, представляющим любое количество пропущенных значений:

SELECT * FROM TABLE WHERE UPPER(student_Name) like UPPER('%xyz%')

Для получения дополнительной информации см. Прикрепленную ссылку: SQL - игнорировать регистр при поиске строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...