Мне недавно была предоставлена возможность работать, изучая SQL. У меня ограниченное знание синтаксиса и практики SQL.SQL, SQLYog - поиск номера номера телефона в столбце в
Как одна из моих первых задач на работе, я должен искать номера телефонов в строке текста, описывающей жилой комплекс. Причина в том, что мы взимаем плату за вставку контактной информации.
Хотя я написал запрос изолирующей только номера с SQLyog, я ищу, чтобы дополнительно отфильтровать + результаты 2k, изолируя случаи, когда у меня есть
1) 10 последовательных цифр без пробелов т.е. 6173274810
2) 10 последовательных цифр с кластером из 3 цифр, 3 цифры и 4 цифры с одним пробелом между , т. Е. 855 347 2501
3) 10 последовательных цифр с кластером из 3 цифр, 3 цифры и 4 цифры с большим количеством чем одно место между т.е. 622 257 2701
До сих пор это то, что я получил,
SELECT ac.complex_id, ac.comments,
LENGTH(r.number_string) AS count_of_characters, r.number_string
FROM aptcomplexes ac, manager_center_subscription mcs,
(SELECT complex_id, LENGTH(comments), comments,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
comments, '*', ''), '/',''), 'a', ''), 'b', ''), 'c', ''), 'd', ''), 'e', ''), 'f', ''), 'g', ''), 'h', ''), 'i', ''), 'j', ''), 'k', ''), 'l', ''), 'm', '')
, 'n', ''), 'o', ''), 'p', ''), 'q', ''), 'r', ''), 's', ''), 't', ''), 'u', ''), 'v', ''), 'w', ''), 'x', ''), 'y', ''), 'z', ''), '.', ''), ',', ''), "’", ''), 'A', ''), 'B', ''), 'C', ''), 'D', ''), 'E', ''),
'F', ''), 'G', ''), 'H', ''), 'I', ''), 'J', ''), 'K', ''), 'L', ''), 'M', ''), 'N', ''), 'O', ''), 'P', ''), 'Q', ''), 'R', ''), 'S', ''), 'T', ''), 'U', ''), 'V', ''), 'W', ''), "X", ''), 'Y', '')
, 'Z', ''), '!', ''), "?", ''), '$', ''), 'Z', ''), '-', ''), '(', ''), ')', ''), "&", ''), '*', ''), ':', ''), '"', ''), ';', ''), '@', ''), '|', ''), ';', ''),"\\", ''), '+', ''), '[', ''),"]" , ''),"â" , '')
, "'", ''),"#" , ''),"=" , ''), "¦", ''), "\n", ''), "½", ''), "½", ''), "©", ''), "Ã", ''), "¿", ''), "ï", ''), "%", ''), "Â", ''), "¼", ''), "¡", ''), "³", ''), "¢", ''), "€", ''), "”", '')
, "_", '') , "‚", '') , "~", '') , "<", '') , ">", '') , "~", ''), "–", '') , "‘", ''), CHAR(10),''), CHAR(9),''), CHAR(13),''), '™',''), 'œ',''), '®','') AS number_string
FROM aptcomplexes
GROUP BY complex_id
) r
WHERE
ac.complex_id = mcs.complex_id
AND ac.complex_id = r.complex_id
AND LENGTH(r.number_string)>=10
AND mcs.subscription_status='Active'
AND mcs.product_id=1
GROUP BY ac.complex_id
ORDER BY LENGTH(r.number_string) DESC
;
Я посмотрел по всему сайту, но не имел успеха найти то, что я действительно искал. У меня такое чувство, что это может иметь отношение к «LIKE» или «REGEXP». Я считаю, что JS учитывает любой тип числа как \ d, есть что-то подобное для SQL, потому что «-» учитывает все символы, правильно?
Уверен, что есть альтернативные способы обойти это, но игра с моим запросом будет полезна. Я действительно хочу учиться! Кроме того, подробное объяснение было бы замечательным.
Спасибо за помощь заранее!
Эй, Крис, хотя это немного задержано, я хочу поблагодарить вас за подробное объяснение! из-за вашего ответа я смог произвести впечатление на моего начальника и разрешить свой SQL-запрос. Еще раз спасибо! – Aurora
Рад, что это сработало. Пожалуйста, отметьте это как принятый ответ, http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work. – chris85
Принятый ответ, Done! – Aurora