Uma solução parcial é obter todos os Notes (VARCHAR)
onde há um desequilíbrio em <
e >
. Mas como posso escrever uma consulta para isso?
Por exemplo:
Input: <html>Hello World</html>
Output: Valid HTML
Input: <html><Hello World</html>
Output: Invalid HTML
Input: <html><Hello World></html>
Output: Valid HTML (Marking it Valid is OK for my use case)
But hey isn't that a valid HTML? It could be <name attribute>
Existem maneiras melhores de verificar HTML "inválido" em que "inválido" é definido como conteúdo HTML com <
alguns caracteres seguidos que não são válidos HTML Element
conforme a especificação?
Inicialmente, pensei que poderia verificar <name
seguido por um (espaço), mas os atributos HTML têm sintaxe como
<name attribute
e são fechados >
no final.
Se tudo o que você deseja fazer é confirmar que a string de entrada consiste em uma sequência de
<...>
elementos:<
caractere usando seu divisor de string favorito>
caractereA string de entrada é válida se todos os elementos passarem nos testes acima.
Exemplo
divisor de cordas
Estou usando a
SQL#.String_Split4k
função com valor de tabela de streaming da edição gratuita da biblioteca SQLCLR SQLsharp de Solomon Rutzky.Se a string de entrada puder ter mais de 4.000 caracteres, a função (menos eficiente)
SQL#.String_Split
será usada (ela lida com strings de até 2 GB).Qualquer divisor de string eficiente (T-SQL ou outro) que possa retornar elementos vazios corretamente com um número de sequência funcionará.
SQL#.String_Split4k
O exemplo abaixo mostra o tipo de retornos de saída .O primeiro parâmetro é a string a ser dividida. O segundo parâmetro é o delimitador. O terceiro parâmetro ( SplitOption ) é definido como 1, o que significa manter elementos vazios.
Resultado:
Tabela e dados de teste
Solução
Resultado