SQL Server 2005 à l'aide de CHARINDEX () Pour diviser une chaîne
Comment puis-je diviser la chaîne suivante basée sur le caractère' -'?
Donc, si j'avais cette chaîne: LD-23DSP-1430
Comment pourrais-je le diviser en plusieurs colonnes comme ceci:
LD 23DSP 1430
Aussi, est-il un moyen de diviser chaque caractère dans un champ distinct si j'avais besoin de (sans le '-')? J'essaie de trouver un moyen de remplacer chaque lettre de l'alphabet de l'OTAN.
Alors ce serait..... Lima Delta Vingt-Trois Delta Sierra Papa Quatorze Heures Trente.... dans un champ.
Je sais que je peux aller le côté gauche comme ceci:
LEFT(@item, CHARINDEX('-', @item) - 1)
source d'informationauteur user2531854
Vous devez vous connecter pour publier un commentaire.
Je ne serait pas exactement dire que c'est facile ou évident, mais avec seulement deux traits d'union, vous pouvez inverser la chaîne et il n'est pas trop dur:
Au-delà et vous pouvez utiliser
split()
à la place.Voici une petite fonction qui va faire "de l'OTAN, de l'encodage" pour vous:
Cette fonction fonctionne, même sur de très longues chaînes, et effectue assez bien (je l'ai couru contre 100 000-chaîne de caractères et il est rentré en 589 ms). Voici un exemple de comment l'utiliser:
J'ai volontairement fait une fonction table de sorte qu'il pourrait être incorporé dans une requête si vous l'exécutez à l'encontre de plusieurs lignes à la fois, il suffit d'utiliser
CROSS APPLY
ou envelopper l'exemple ci-dessus entre parenthèses afin de l'utiliser comme une valeur dans laSELECT
clause (vous pouvez mettre un nom de colonne dans le paramètre de la fonction de position).Essayez la requête suivante: