Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Составить like / 7 сообщений из 7, страница 1 из 1
27.03.2019, 06:46
    #39791967
*Ann*
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составить like
Добрый день.
Помогите, пожалуйста, составить выражение для оператора like.
Надо выбрать номера домов больше 400. При этом поле текстовое и может содержать любое количество символов, например "453/1" или "1012 литер А".
...
Рейтинг: 0 / 0
27.03.2019, 10:17
    #39792057
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составить like
Код: sql
1.
WHERE Number > '400'
...
Рейтинг: 0 / 0
27.03.2019, 11:05
    #39792094
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составить like
iap
Код: sql
1.
WHERE Number > '400'

дык, для "1012 литер А" - "не сыграет" ...
Код: sql
1.
select case when '1012 литер А' > '400' then 1 else 0 end 


(Отсутствует имя столбца)0
...
Рейтинг: 0 / 0
27.03.2019, 11:15
    #39792105
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составить like
Отделить первое число от нечисла (пробел, косая, буквы).
Преобразовать полученную подстроку в число
Сделать проверку на более 400
(профит)
...
Рейтинг: 0 / 0
27.03.2019, 11:59
    #39792157
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составить like
courtiap
Код: sql
1.
WHERE Number > '400'


дык, для "1012 литер А" - "не сыграет" ...
Код: sql
1.
select case when '1012 литер А' > '400' then 1 else 0 end 



(Отсутствует имя столбца)0
Код: sql
1.
select case when PATINDEX('%[^0123456789]%','1012 литер А') > LEN('400')+1 OR '1012 литер А' > '400' then 1 else 0 end
...
Рейтинг: 0 / 0
27.03.2019, 12:18
    #39792177
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составить like
*Ann*,

задача не имеет решения в общем случае, можно только предполагать , что полученные символы являются номером дома.
Например, номер дома может быть 400А и 400Б или строка записана как "д. 30 49 крп.100".
...
Рейтинг: 0 / 0
27.03.2019, 13:01
    #39792236
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составить like
Ищет в строке число (длиной от трех знаков) и преобразовает его в Int. Если не находит - NULL

Код: sql
1.
2.
3.
4.
try_cast(substring(HouseNum,
nullif(patindex('%[0-9][0-9][0-9]%',HouseNum),0),
isnull(nullif(patindex('%[^0-9]%',substring(HouseNum,nullif(patindex('%[0-9][0-9][0-9]%',HouseNum),0),len(HouseNum))),0)-1,len(HouseNum)))
as int)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Составить like / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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