Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Null on Null Input | False |
| Schema Bound | True |
| Assembly |
Parameters
3| Name | Data Type | Length | Description |
|---|---|---|---|
| (Result) | TABLE | max | |
| @pString | varchar | -1 | |
| @pDelimiter | char | 1 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
CREATE OR ALTER FUNCTION dbo.DelimitedSplit8K
--===== Define I/O parameters
(@pString VARCHAR(max), @pDelimiter CHAR(1))
RETURNS TABLE WITH SCHEMABINDING AS
RETURN
--===== "Inline" CTE Driven "Tally Table" produces values from 0 up to 10,000...
-- enough to cover VARCHAR(8000)
WITH E1(N) AS (
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1
), --10E+1 or 10 rows
E2(N) AS (SELECT 1 FROM E1 a, E1 b), --10E+2 or 100 rows
E4(N) AS (SELECT 1 FROM E2 a, E2 b), --10E+4 or 10,000 rows max
cteTally(N) AS (--==== This provides the "zero base" and limits the number of rows right up front
-- for both a performance gain and prevention of accidental "overruns"
SELECT 0 UNION ALL
SELECT TOP (DATALENGTH(ISNULL(@pString,1))) ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM E4
),
cteStart(N1) AS (--==== This returns N+1 (starting position of each "element" just once for each delimiter)
SELECT t.N+1
FROM cteTally t
WHERE (SUBSTRING(@pString,t.N,1) = @pDelimiter OR t.N = 0)
)
--===== Do the actual split. The ISNULL/NULLIF combo handles the length for the final element when no delimiter is found.
SELECT ItemNumber = ROW_NUMBER() OVER(ORDER BY s.N1),
Item = SUBSTRING(@pString,s.N1,ISNULL(NULLIF(CHARINDEX(@pDelimiter,@pString,s.N1),0)-s.N1,8000))
FROM cteStart s
;
GO
GO
CREATE OR ALTER FUNCTION dbo.DelimitedSplit8K
--===== Define I/O parameters
(@pString VARCHAR(max), @pDelimiter CHAR(1))
RETURNS TABLE WITH SCHEMABINDING AS
RETURN
--===== "Inline" CTE Driven "Tally Table" produces values from 0 up to 10,000...
-- enough to cover VARCHAR(8000)
WITH E1(N) AS (
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1
), --10E+1 or 10 rows
E2(N) AS (SELECT 1 FROM E1 a, E1 b), --10E+2 or 100 rows
E4(N) AS (SELECT 1 FROM E2 a, E2 b), --10E+4 or 10,000 rows max
cteTally(N) AS (--==== This provides the "zero base" and limits the number of rows right up front
-- for both a performance gain and prevention of accidental "overruns"
SELECT 0 UNION ALL
SELECT TOP (DATALENGTH(ISNULL(@pString,1))) ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM E4
),
cteStart(N1) AS (--==== This returns N+1 (starting position of each "element" just once for each delimiter)
SELECT t.N+1
FROM cteTally t
WHERE (SUBSTRING(@pString,t.N,1) = @pDelimiter OR t.N = 0)
)
--===== Do the actual split. The ISNULL/NULLIF combo handles the length for the final element when no delimiter is found.
SELECT ItemNumber = ROW_NUMBER() OVER(ORDER BY s.N1),
Item = SUBSTRING(@pString,s.N1,ISNULL(NULLIF(CHARINDEX(@pDelimiter,@pString,s.N1),0)-s.N1,8000))
FROM cteStart s
;
GO
Depends On
No items found
Used By
192- dbo.api_padrones
- dbo.api_padrones_avanzado
- dbo.api_padrones_avanzado_20022025
- dbo.api_padrones_busqueda_avanzada
- dbo.api_padrones_busqueda_avanzada_20022025
- dbo.backend_actualizar_edicto
- dbo.backend_asigna_cuit_edictos_homonimos
- dbo.backend_asigna_cuit_edictos_homonimos_15012024
- dbo.backend_asigna_cuit_edictos_homonimos_ant
- dbo.backend_asigna_cuit_edictos_homonimos_mis
- dbo.backend_complejidad_doc_lista
- dbo.backend_documentos
- dbo.backend_procesar_socio_2024
- dbo.backend_procesar_socio_finalizar
- dbo.backend_update_juicios_sc
- dbo.backend_verificacion_docs
- dbo.backend_verificacion_docs_10022022
- dbo.backend_verificacion_docs_2022
- dbo.backend_verificacion_docs_24022022
- dbo.backend_verificacion_docsAGB
- dbo.backend_verificacion_led_docs
- dbo.buscar_clientes
- dbo.buscar_clientes_2023
- dbo.Clientes_
- dbo.Dashboard_backend_informes_tareas
- dbo.eliminar_monitoreo
- dbo.fide_header_tango_p
- dbo.Imperium_contratista_doc_pendiente
- dbo.Imperium_contratista_doc_rechazada
- dbo.Imperium_KPIs
- dbo.Imperium_KPIs_detail
- dbo.Imperium_Reporte_Altas_Bajas_Doc
- dbo.Imperium_Reporte_Docs_Pendientes
- dbo.Imperium_Reporte_Pendientes_Complejidad_Plazo
- dbo.Imperium_Reporte_Recursos
- dbo.Imperium_Verif_Docs
- dbo.Imperium_Verificar_Documento_Parcial
- dbo.Imperium_vista_admin
- dbo.Imperium_vista_admin_2
- dbo.Imperium_vista_admin_agb
- dbo.Imperium_vista_admin_PD
- dbo.Imperium_vista_admin_PD_AGB
- dbo.Imperium_vista_admin_PD_AGB2
- dbo.Imperium_vista_cliente
- dbo.Imperium_vista_contratista_Alta_Subcontratista
- dbo.Imperium_vista_contratista_Historial
- dbo.Imperium_vista_contratista_Historial_ANT
- dbo.Imperium_vista_contratista_Historial1
- dbo.Imperium_vista_Historial_Def
- dbo.informes_updates
- dbo.informes_updates_2
- dbo.informes_updates_ANT
- dbo.informesPorServicioEstado
- dbo.iv_estados_en_proceso
- dbo.IV_panel_reports
- dbo.IV_panel_reports2
- dbo.led_amx_a_informix2
- dbo.LED_Clientes
- dbo.LED_PANEL_CONTROL
- dbo.LED_PANEL_CONTROL_20201216
- dbo.LED_PANEL_CONTROL_dic2020
- dbo.LED_PANEL_CONTROL_mis
- dbo.LEO_LN_dashboard_graficos_pre_new
- dbo.LN_actualizar_legajo
- dbo.LN_actualizar_legajo_10012023
- dbo.LN_actualizar_legajo_2022
- dbo.LN_actualizar_legajo_AGB
- dbo.LN_actualizar_legajo_AGB_VRM_NO_TOCAR
- dbo.LN_actualizar_legajo_RAMI
- dbo.LN_alta_Contratistas
- dbo.LN_alta_Contratistas_RA
- dbo.LN_balances_data
- dbo.LN_Blue
- dbo.LN_Blue_23062023
- dbo.LN_Blue_AGB
- dbo.LN_Blue_MIS
- dbo.LN_Blue_UPD
- dbo.LN_Blue_UPDAGB
- dbo.LN_Blue_UPDAGB2
- dbo.LN_Blue2
- dbo.LN_contrapartes_
- dbo.LN_contrapartes_a_monitoreo
- dbo.LN_dashboard_cliente
- dbo.LN_dashboard_cliente_0822
- dbo.LN_dashboard_cliente_13052020
- dbo.LN_dashboard_cliente_2020
- dbo.LN_dashboard_cliente_20200403
- dbo.LN_dashboard_cliente_2024
- dbo.LN_dashboard_cliente_21-08-2022-AGB
- dbo.LN_dashboard_cliente_A_BORRAR
- dbo.LN_dashboard_cliente_AB
- dbo.LN_dashboard_cliente_AGB
- dbo.LN_dashboard_cliente_fidelitasprod
- dbo.LN_dashboard_cliente_fidelitasprod_06122022
- dbo.LN_dashboard_cliente_fidelitasprod_16112021
- dbo.LN_dashboard_cliente_fidelitasprod_17102020
- dbo.LN_dashboard_cliente_fidelitasprod_20221012
- dbo.LN_dashboard_cliente_fidelitasprod_AB
- dbo.LN_dashboard_cliente_fidelitasprod_AGB
- dbo.LN_dashboard_cliente_fidelitasprod_mis
- dbo.LN_dashboard_cliente_fidelitasprod_mis_06122022
- dbo.LN_dashboard_cliente_fidelitasprod_mis_18102022
- dbo.LN_dashboard_cliente_fidelitasprod_mis_prueba
- dbo.LN_dashboard_cliente_fidelitasprod_mis2
- dbo.LN_dashboard_cliente_fidelitasprod_mis2024
- dbo.LN_dashboard_cliente_fidelitasprod_prueba
- dbo.LN_dashboard_cliente_fidelitasprod_test
- dbo.LN_dashboard_cliente_fidelitasprod_vigente_o_novigente
- dbo.LN_dashboard_cliente_fidelitasprod121022
- dbo.LN_dashboard_cliente_MIS
- dbo.LN_dashboard_cliente_ppp
- dbo.LN_dashboard_graficos_2
- dbo.LN_dashboard_graficos_filtrado
- dbo.LN_dashboard_graficos_filtrado_12102023
- dbo.LN_dashboard_graficos_filtrado_17102023
- dbo.LN_dashboard_graficos_filtrado_MIS
- dbo.LN_dashboard_graficos_filtrado_MIS2
- dbo.LN_dashboard_graficos_pre
- dbo.LN_dashboard_graficos_pre_new
- dbo.LN_dashboard_graficos_pre_new_ant
- dbo.LN_dashboard_graficos_pre_new_error
- dbo.LN_dashboard_graficos_pre_new_ms
- dbo.LN_demo_fidecheck_reporte
- dbo.LN_docs_backend
- dbo.LN_docs_campos_puntos_
- dbo.LN_documentos
- dbo.LN_excel_opciones_RSE
- dbo.LN_excel_RSE
- dbo.LN_excel_RSE2
- dbo.LN_excel_Sostenibilidad
- dbo.LN_familia_tipo_informe
- dbo.LN_Fidecheck_ws_select
- dbo.LN_graficos_imperium
- dbo.LN_graficos_imperium_05072022
- dbo.LN_graficos_imperium_14062022
- dbo.LN_graficos_imperium_21062022
- dbo.LN_graficos_imperium_24062022
- dbo.LN_graficos_imperium_AGB
- dbo.LN_graficos_imperium_new
- dbo.LN_graficos_imperiumAGB
- dbo.LN_indicadores_opciones
- dbo.LN_indicadores_producto
- dbo.LN_informes
- dbo.LN_informes_AGB
- dbo.LN_informes_MIS
- dbo.LN_panel_control_excel
- dbo.LN_panel_control_excel_2020
- dbo.LN_panel_control_excel_datos_comerciales
- dbo.LN_panel_control_excel_deuda_previsional
- dbo.LN_panel_control_excel_pacto_mundial
- dbo.LN_panel_control_excel_personal
- dbo.LN_panel_control_excel2
- dbo.LN_panel_control_sub_excel
- dbo.LN_panel_reports
- dbo.LN_score_detalle_killer_
- dbo.LN_score_detalle_puntos_
- dbo.LN_scores_VRM
- dbo.LN_scores_VRM_05062022
- dbo.LN_scores_VRM_06062022
- dbo.LN_scores_VRM_08062022
- dbo.LN_scores_VRM_ANT
- dbo.LN_scores_VRM_NEW
- dbo.LN_set_docs_
- dbo.LN_subcontratistas_fancy
- dbo.LN_subcontratistas_fancy_AGB
- dbo.LN_tipo_informes_
- dbo.LN_trazabilidad_id_padron_
- dbo.LN_verificacion_docs_
- dbo.monitoreo_datos
- dbo.monitoreo_lista
- dbo.obtener_activo_contables
- dbo.obtener_activo_resumido
- dbo.obtener_estado_de_resultados_contables
- dbo.obtener_estado_de_resultados_resumido
- dbo.obtener_indices_de_gestion
- dbo.obtener_indices_de_gestion_resumido
- dbo.obtener_pasivo_contables
- dbo.obtener_pasivo_resumido
- dbo.obtener_productos_cliente
- dbo.obtener_registro_consumos
- dbo.PANEL_CONTROL_EXCEL_RESULTADO
- dbo.Reporte_consumos_api_
- dbo.SAAS_Consulta_CUIT
- dbo.sp_domicilios_buscar_vecinos
- dbo.sp_domicilios_buscar_vecinos_ant
- dbo.update_monitoreo
- dbo.usuarios_restricciones_indicadores
- dbo.usuarios_restricciones_paises
- dbo.usuarios_restricciones_paises_familias
- dbo.usuarios_restricciones_paises_familias_AGB
- dbo.AdicionarDiasFecha
- dbo.TareasDependientes