Как отфильтровать таблицу в MS SQL по первому и последнему символам значений строки?

Как правильно выполнить фильтрацию таблицы по первому и последнему символам? Вводила разные запросы, но не получила ожидаемых результатов. Например: 

1. `SELECT id, name FROM testtable WHERE name LIKE 'S%';`
2. `SELECT id, name FROM testtable WHERE name LIKE 'S%n';`
3. `SELECT id, name FROM testtable WHERE name LIKE '%n';`

Первый запрос работает корректно, второй и третий запросы не дают ожидаемых результатов, хотя в таблице присутствуют имена, которые начинаются на 'S' и заканчиваются на 'n'. В чем заключается ошибка?
  • 28 мая 2024 г. 20:41
Ответы на вопрос 2
Проблема с запросами второго и третьего типа заключается в том, что символ '%' используется для обозначения любой последовательности символов (включая пустую строку), а не конкретного символа. Поэтому запросы не работают ожидаемым образом.

Для фильтрации по первому и последнему символам строки в MS SQL можно использовать функции SUBSTRING и LEN. Например:

```
-- Фильтрация по первому символу 'S' и последнему символу 'n'
SELECT id, name 
FROM testtable 
WHERE SUBSTRING(name, 1, 1) = 'S' AND SUBSTRING(name, LEN(name), 1) = 'n';
```

В данном запросе мы указываем условия для первого символа (SUBSTRING(name, 1, 1) = 'S') и последнего символа (SUBSTRING(name, LEN(name), 1) = 'n') строки. Таким образом, мы можем правильно отфильтровать данные по первому и последнему символам.
Так попробуйте: 
select id, name from testtable where trim(name) like 'S%n';
select id, name from testtable where trim(name) like '%n';
Похожие вопросы