Tengo un campo que la gente históricamente podría usar para suministrar libremente un valor. Necesito identificar los registros que no tienen un valor apropiado para poder limpiarlos.
He estado buscando en SSIS para esto. Mi inclinación es usar un componente de secuencia de comandos con una expresión regular en algún código C #, seguido de una redirección. Aún así, me preguntaba si había una forma en SSIS para hacer esto sin recurrir a C #.
No he tenido mucha suerte al encontrar una manera de averiguar cuántos registros no tienen los números de teléfono apropiados.
sql-server
sql-server-2008
query
rsteckly
fuente
fuente
Respuestas:
Es una tarea de una sola vez. Escriba una pequeña aplicación o simplemente seleccione un script, use C #, VB.NET, T-SQL ... y analice todos los patrones manualmente. Quizás descubra patrones comunes de los operadores que incorporaron estos datos. Agregue un algoritmo para cada patrón. Aplica tus patrones a datos reales en una base de datos. Eliminar todos los registros "incorrectos".
Suerte.
ADICIONAL:
Como opción, puede utilizar la base de datos de números de teléfono para verificar la validez de la persona número2 si es posible.
fuente
SSIS = Servicio de integración de SQL Server, principalmente una forma de integrar datos de muchas fuentes a muchos destinos. Algo así como un motor para tomar datos de excel / csv / text ... qué otro archivo viene a la mente ... y moverlo a una base de datos. O al revés.
Pero para seleccionar y manipular los datos, aún podría / se le requeriría usar T-SQL.
Por lo que sé, T-SQL no tiene ningún componente regex para ayudarte, por lo que deberías usar un ensamblado .NET para hacerlo.
fuente
Puede obtener una estimación rápida a través de la siguiente cláusula WHERE ya que los números de teléfono no deben tener caracteres alfabéticos ... a menos que permita números fonéticos, ej. 1-800-ANT-FARM.
No puede hacer expresiones regulares complejas usando LIKE , pero podría obtener una aproximación cercana.
Mi prueba:
fuente
Depende de lo que sea aceptable o no en un número de teléfono
Esto le proporciona todos los valores que no son 100% numéricos al usar NOT en el patrón de búsqueda
Pero si lo permite
-
o(000)
es más complejo: necesita datos de muestra, por favorfuente
Intenta algo como esto:
Si encuentra patrones que son válidos pero no están cubiertos por la consulta, agréguelos a las partes y piezas que se muestran. Si encuentra algo que necesita estar junto en las dos partes, entonces modeléelo después de la Extensión CTE (que falta o una combinación de Ext1 y Ext2). Si necesita admitir números internacionales y tienen patrones diferentes (que no coinciden con los Estados Unidos 3-3-4), necesitará un análisis y una correlación adecuada para que los códigos de país correctos coincidan con los patrones correctos. Por ejemplo, sé que en ciertas partes de Brasil, este es un número válido: +55 85 1234-5678 (código de país 55, código de área de dos dígitos, luego patrón 4-4).
Otra técnica para ayudarlo a analizar sus datos es esta:
Esto puede ayudarlo a comprender cómo son sus datos al ignorar las diferencias de números de teléfono reales entre cada fila y prestar atención solo a la disposición y el recuento de dígitos. Si hay muchos caracteres alfabéticos, intente comenzar a reemplazar patrones válidos (como "ext") con un valor que no se encuentre en la lista, para que pueda colapsar el resto de la entrada espuria en algo que pueda analizarse con un valor similar.
Replace()
para cada letra del alfabetofuente