Я хотел выбрать все строки, в которых адреса диапазона равны
Таблица
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 не выбран, так как у него другой диапазон адресов.
Я не знаю, с чего начать .. Новичок в Mysql
1) Выберите все значения 2) разделите nvarchar на пробел ('') 3) Разделите новые значения на '-', 4) сравните их. Также посмотрите нормализацию базы данных en.wikipedia.org/wiki/Database_normalization






Вы можете использовать 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
Обратите внимание, что этот код предполагает, что за числами следует пробел.
@ min2bro Вы должны принять этот ответ, так как он был опубликован быстрее, чем принятый в настоящее время, и остается таким же.
Попробуй это:
Пример данных:
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);
select * from your_table where
SUBSTRING_INDEX( SUBSTRING_INDEX(Address,'-',-1),' ',1)=SUBSTRING_INDEX(Address,'-',1)
что ты уже испробовал?