У меня есть таблица базы данных с 5 столбцами: телефоны1, телефоны2, телефоны3, телефоны4, телефоны < /p>
Первые четыре столбца (телефоны1, телефоны2, телефоны3, телефоны4). Не всегда в хорошем формате. Итак, я хочу извлечь допустимые 10-значные номера телефонов (на основе США) из первых четырех столбцов и сохранить их в последнем столбце (телефоны), разделенные запятыми. < /P>
Вот некоторые примерные данные Из таблицы на первых четырех столбцах и ожидаемом выводе в пятом столбце: < /p>
телефоны1 < /th>
телефоны2
phones3
phones4 телефоны < /th>
< /tr>
< /thead>
222 < /td>
4455 < /td>
< td style = "text-align: left;"> 1 (333) 145
1 (333) 222-1100 ext111 "
3332221100 < /td>
< /tr>
" 1 (555) 444-3322 "< /td>
null < /td>
Direct: 5002004460 < /td>
8884002010 < /td>
55544443322,5002004460 8884002010 < /td>
< /tr>
$ 5 $ -444-3322 < /td>
< /td>
10020044 < /td>
+1555, 333,8822 < /td>
5553338822 < /td>
< /tr>
... < /td>
222-333-3000 x444-08 < /td>
(333) 777-0330 e < /td>
888-333-9955
2223333000 3337770330 8883339955
< /tbody>
< /table> < /div>
Мой скрипт работает нормально для приведенных выше данных. Но когда в одном или нескольких первых четырех столбцах есть несколько действительных номеров телефонов, разделенных с помощью запятой или вертикальной линии, которые следует за следующим, это не работает по мере необходимости. Он извлекает только первый 10-значный номер телефона в записи, но не другой. < /P>
(555) 333-4422, 1900-800-4422
(555) 444-2022|(600)9002020|444333-2211
1(999) 222-2244", "1(888) 333-1100", "1(900) 200-5050
< /code>
Ниже мой скрипт до сих пор, любые идеи, как отредактировать его для учета записей с несколькими действительными номерами телефонов? < /p>
// DB Info
$db_host = "localhost";
$db_name = "db_name";
$db_user = "db_user";
$db_pass = "db_pass";
// DB Connection
class DB { public static $d; }
DB::$d = new mysqli($db_host, $db_user, $db_pass, $db_name);
if (DB::$d->connect_error) exit("Connection failed, please try again.");
// Table and Columns
$table = "sample_testx";
$columns = array("office_phone", "phone_number", "a_phone_number", "office");
$result = "good_phones";
// Filter
$columns = implode(", ", array_map(fn($col) => "
NULLIF(
REGEXP_REPLACE(
REGEXP_SUBSTR(
REGEXP_REPLACE(`$col`, '[^0-9]', ''), -- Remove non-numeric chars
'1?([0-9]{10})' -- Get first 10 digits
),
'^1', '' -- Remove leading 1
),
'' -- Convert empty values to NULL
)
", $columns));
// Save
$r = DB::$d->query("
UPDATE `$table`
SET `$result` = NULLIF(CONCAT_WS(',', $columns), '') -- Save NULL if no valid numbers
");
Подробнее здесь: https://stackoverflow.com/questions/794 ... rs-via-sql
Извлечение действительных номеров телефонов США через SQL ⇐ MySql
Форум по Mysql
-
Anonymous
1739301475
Anonymous
У меня есть таблица базы данных с 5 столбцами: телефоны1, телефоны2, телефоны3, телефоны4, телефоны < /p>
Первые четыре столбца (телефоны1, телефоны2, телефоны3, телефоны4). Не всегда в хорошем формате. Итак, я хочу извлечь допустимые 10-значные номера телефонов (на основе США) из первых четырех столбцов и сохранить их в последнем столбце (телефоны), разделенные запятыми. < /P>
Вот некоторые примерные данные Из таблицы на первых четырех столбцах и ожидаемом выводе в пятом столбце: < /p>
телефоны1 < /th>
телефоны2
phones3
phones4 телефоны < /th>
< /tr>
< /thead>
222 < /td>
4455 < /td>
< td style = "text-align: left;"> 1 (333) 145
1 (333) 222-1100 ext111 "
3332221100 < /td>
< /tr>
" 1 (555) 444-3322 "< /td>
null < /td>
Direct: 5002004460 < /td>
8884002010 < /td>
55544443322,5002004460 8884002010 < /td>
< /tr>
$ 5 $ -444-3322 < /td>
< /td>
10020044 < /td>
+1555, 333,8822 < /td>
5553338822 < /td>
< /tr>
... < /td>
222-333-3000 x444-08 < /td>
(333) 777-0330 e < /td>
888-333-9955
2223333000 3337770330 8883339955
< /tbody>
< /table> < /div>
Мой скрипт работает нормально для приведенных выше данных. Но когда в одном или нескольких первых четырех столбцах есть несколько действительных номеров телефонов, разделенных с помощью запятой или вертикальной линии, которые следует за следующим, это не работает по мере необходимости. Он извлекает только первый 10-значный номер телефона в записи, но не другой. < /P>
(555) 333-4422, 1900-800-4422
(555) 444-2022|(600)9002020|444333-2211
1(999) 222-2244", "1(888) 333-1100", "1(900) 200-5050
< /code>
Ниже мой скрипт до сих пор, любые идеи, как отредактировать его для учета записей с несколькими действительными номерами телефонов? < /p>
// DB Info
$db_host = "localhost";
$db_name = "db_name";
$db_user = "db_user";
$db_pass = "db_pass";
// DB Connection
class DB { public static $d; }
DB::$d = new mysqli($db_host, $db_user, $db_pass, $db_name);
if (DB::$d->connect_error) exit("Connection failed, please try again.");
// Table and Columns
$table = "sample_testx";
$columns = array("office_phone", "phone_number", "a_phone_number", "office");
$result = "good_phones";
// Filter
$columns = implode(", ", array_map(fn($col) => "
NULLIF(
REGEXP_REPLACE(
REGEXP_SUBSTR(
REGEXP_REPLACE(`$col`, '[^0-9]', ''), -- Remove non-numeric chars
'1?([0-9]{10})' -- Get first 10 digits
),
'^1', '' -- Remove leading 1
),
'' -- Convert empty values to NULL
)
", $columns));
// Save
$r = DB::$d->query("
UPDATE `$table`
SET `$result` = NULLIF(CONCAT_WS(',', $columns), '') -- Save NULL if no valid numbers
");
Подробнее здесь: [url]https://stackoverflow.com/questions/79431111/extracting-valid-us-phone-numbers-via-sql[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия