Разделить и сопоставить строку в MYSQL

0

Я хотел выбрать все строки, где адрес диапазона равен

Таблица

  id    Address
    1   5419-5436 East hancock Street, Somerset, VA
    2   251 West Churchill Road, Arlington, TX
    3   981-981 Main Street , norman, OK
    4   615-615 Mountain Ave, Bridgewater, NJ

Выход

id  Address
3   981-981 Main Street , norman, OK
4   615-615 Mountain Ave, Bridgewater, NJ

Адрес номера 981-981,615-615 равен. 5419-5436 не выбрано, так как оно имеет различный диапазон адресов.

  • 0
    что ты уже испробовал?
  • 0
    Я не знаю, с чего начать .. Новый Mysql
Показать ещё 1 комментарий
Теги:

3 ответа

1
Лучший ответ
select * from your_table where
SUBSTRING_INDEX( SUBSTRING_INDEX(Address,'-',-1),' ',1)=SUBSTRING_INDEX(Address,'-',1)
3

Вы можете использовать SUBSTRING_INDEX для выбора частей по обе стороны от "-" и сравнить их:

SELECT * 
FROM Table1
WHERE SUBSTRING_INDEX(Address, '-', 1) = SUBSTRING_INDEX(SUBSTRING_INDEX(Address, '-', -1), ' ', 1)

Результат для ваших данных:

id    Address
3     981-981 Main Street , norman, OK 
4     615-615 Mountain Ave, Bridgewater, NJ 

Обратите внимание, что этот код предполагает, что за номерами следует пробел.

  • 0
    @ min2bro Вы должны принять этот ответ, так как он был быстрее, чем принятый в настоящее время, и такой же.
  • 0
    Спасибо @ MichałTurczyn Я сам не хотел этого говорить ...
1

Попробуй это:

Пример данных:

create table tbl(txt varchar(100));
insert into tbl values
('5419-5436 East hancock Street, Somerset, VA'),
('251 West Churchill Road, Arlington, TX'),
('981-981 Main Street , norman, OK'),
('615-615 Mountain Ave, Bridgewater, NJ');

T-SQL ниже. Во внутреннем запросе мы выбираем весь адрес и адрес диапазона извлекаем и отфильтровываем те записи, у которых нет дефиса (-). В внешнем запросе мы разделяем RangeAddress на дефис (-) и сравниваем с частями RangeAddress. Исходя из этого, мы фильтруем результирующий набор.

select txt from (
    select txt,
           substring(txt, 1, locate(' ', txt) - 1) RangeAddress
    from tbl
    where locate('-', substring(txt, 1, locate(' ', txt) - 1)) > 0
) a 
where substring(RangeAddress, 1, locate('-', RangeAddress) - 1) = 
                 substring(RangeAddress, locate('-', RangeAddress) + 1);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню