У меня есть поле, которое исторически люди могли использовать, чтобы свободно предоставлять стоимость. Мне нужно идентифицировать записи, которые не имеют подходящего значения, чтобы я мог их очистить.
Я искал в SSIS для этого. Я склоняюсь к использованию компонента сценария с выражением регулярного выражения в некотором коде C # с последующим перенаправлением. Тем не менее, мне было интересно, есть ли способ в SSIS сделать это, не прибегая к C #.
Мне не повезло найти способ узнать, сколько записей не имеют соответствующих телефонных номеров.
sql-server
sql-server-2008
query
rsteckly
источник
источник
Ответы:
Это одноразовое задание. Напишите небольшое приложение или просто выберите скрипт, используйте C #, VB.NET, T-SQL ... и анализируйте все шаблоны вручную. Возможно, вы найдете общие закономерности операторов, которые внесли эти данные. Добавить алгоритм для каждого шаблона. Примените ваши шаблоны к реальным данным в базе данных. Удалите все «неправильные» записи.
Удача.
ДОБАВЛЕНО:
Как вариант, вы можете использовать базу телефонных номеров, чтобы проверить достоверность person2number, если это возможно.
источник
SSIS = SQL Server Integration Service - в основном способ интеграции данных из многих источников во многие места назначения. Что-то вроде движка для извлечения данных из excel / csv / text ... какой другой файл приходит на ум ... и перемещения его в базу данных. Или наоборот.
Но для того, чтобы фактически выбирать и манипулировать данными, вы все равно сможете / будете обязаны использовать T-SQL.
Из того, что я знаю, в T-SQL нет никакого компонента регулярных выражений, который мог бы вам помочь, поэтому вам потребуется использовать сборку .NET для этого.
источник
Вы можете получить быструю оценку с помощью следующего предложения WHERE, поскольку номера телефонов не должны иметь буквенных символов ... если только вы не разрешите фонетические номера, напр. 1-800-ANT-ФАРМ.
Вы не можете выполнять сложные регулярные выражения, используя LIKE , но вы можете получить близкое приближение.
Мой тест:
источник
Смотря что приемлемо или нет в номере телефона
Это дает вам все значения, которые не являются 100% числовыми, используя NOT в шаблоне поиска.
Но если вы позволите
-
или(000)
тогда это будет более сложнымисточник
Попробуйте что-то вроде этого:
Если вы найдете шаблоны, которые действительны, но не охватываются запросом, добавьте их к показанным деталям и частям. Если вы найдете что-то, что должно быть вместе в двух частях, то смоделируйте это после Extension CTE (который отсутствует или является комбинацией Ext1 и Ext2). Если вам нужно поддерживать международные номера, и они имеют разные шаблоны (не соответствующие США 3-3-4), вам потребуется некоторый анализ и правильная корреляция, чтобы привести правильные коды стран в соответствие с правильными шаблонами. Например, я знаю, что в некоторых частях Бразилии это действительное число: +55 85 1234-5678 (код страны 55, код города, состоящий из двух цифр, затем шаблон 4-4).
Еще один метод, который поможет вам проанализировать ваши данные:
Это может помочь вам понять, на что похожи ваши данные, игнорируя фактические различия телефонных номеров между каждой строкой и обращая внимание только на расположение и количество цифр. Если имеется много буквенных символов, попробуйте начать замену допустимых шаблонов (таких как «ext») значением, не найденным в списке, чтобы можно было свести оставшиеся ложные данные во что-то, что можно проанализировать с помощью аналогичного
Replace()
за каждую букву в алфавите.источник