Neste artigo, discutiremos várias maneiras de dividir o valor da string delimitada. Isso pode ser alcançado usando vários métodos, incluindo.
- Uso da função STRING_SPLIT para dividir a string
- Crie uma função com valor de tabela definida pelo usuário para dividir a string,
- Use XQuery para dividir o valor da string e transformar uma string delimitada em XML
Primeiramente, precisamos criar uma tabela e inserir nela dados que serão usados em todos os três métodos. A tabela deve conter uma única linha com o id do campo e uma string com caracteres delimitadores. Crie uma tabela chamada “aluno” usando o seguinte código.
CRIAR TABELA aluno (ID INT IDENTITY (1, 1), student_name VARCHAR (MAX))
Insira os nomes dos alunos separados por vírgulas em uma única linha executando o código a seguir.
INSERT INTO student (student_name) VALUES ('Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad')
Criação de tabelas e inserção de dados
Verifique se os dados foram inseridos na tabela ou não usando o código a seguir.
selecione * do aluno
Verifique se os dados foram inseridos na tabela “aluno”
Método 1: use a função STRING_SPLIT para dividir a string
No SQL Server 2016, “STRING_SPLIT” foi introduzida a função que pode ser usada com nível de compatibilidade 130 e acima. Se você usar a versão 2016 do SQL Server ou superior, poderá usar esta função integrada.
além disso “STRING_SPLIT” insere uma string que tem subcadeias delimitadas e insere um caractere para usar como delimitador ou separador. A função produz uma tabela de coluna única cujas linhas contêm as subcadeias. O nome da coluna de saída é “ Valor' . Esta função obtém dois parâmetros. O primeiro parâmetro é uma string e o segundo é um caractere delimitador ou separador com base no qual devemos dividir a string. A saída contém uma tabela de coluna única na qual substrings estão presentes. Esta coluna de saída é chamada 'Valor' como podemos ver na figura abaixo. Além disso, o “STRING SPLIT” A função table_valued retorna uma tabela vazia se a string de entrada for NULL.
Nível de compatibilidade do banco de dados:
Cadabase de dadoséconectadocomparacompatibilidadenível.istopermiteabanco de dadoscomportamentoparaestarcompatívelcom ThéespecialSQLServidorversãoistocorreem.
Agora chamaremos a função “string_split” para dividir a string delimitada por vírgulas. Mas o nível de compatibilidade era inferior a 130, portanto, o erro seguinte foi gerado. “Nome de objeto inválido‘ SPLIT_STRING '”
O erro surge se o nível de compatibilidade do banco de dados for inferior a 130 “nome de objeto inválido split_string”
Portanto, precisamos definir o nível de compatibilidade do banco de dados como 130 ou superior. Portanto, seguiremos essas etapas para definir o nível de compatibilidade do banco de dados.
- Em primeiro lugar, defina o banco de dados como “single_user_access_mode” usando o código a seguir.
ALTER DATABASE SET SINGLE_USER
- Em segundo lugar, altere o nível de compatibilidade do banco de dados usando o código a seguir.
ALTER DATABASE SET COMPATIBILITY_LEVEL = 130
- Coloque o banco de dados de volta no modo de acesso multiusuário usando o código a seguir.
ALTER DATABASE SET MULTI_USER
USE [master] GO ALTER DATABASE [bridge_centrality] SET SINGLE_USER ALTER DATABASE [bridge_centrality] SET COMPATIBILITY_LEVEL = 130 ALTER DATABASE [bridge_centrality] SET MULTI_USER GO
O resultado será:
Mude o nível de compatibilidade para 130
Agora execute este código para obter o resultado necessário.
DECLARE @string_value VARCHAR (MAX); SET @ string_value = 'Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad' SELECT * FROM STRING_SPLIT (@string_value,