0
votes

Prendre une corde droite après ^

J'ai deux enregistrements de ces données: je le souhaite dans MS SQL

test1^test2^test3^test4  
test5  
test6^test7  
null  


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser droite () et charindex () : xxx


10 commentaires

Son lancement d'une erreur: MSG 536, niveau 16, État 2, ligne 23 Paramètre de longueur non valide transmis à la bonne fonction.


Je pense que vous avez besoin de longueur (str) - charindex ('^', str) pour la bonne fonction car il s'agit du nombre de caractères à droite non l'index à la gauche


@Dinesh. . . Donc, vous n'avez pas de ^ dans une valeur de chaîne.


'Longueur' n'est pas un nom de fonction intégré reconnu.


@Dinesh - Droite sur SQL Server Il est len ​​() - sur db2 il est longueur


oui tu as raison yogesh. Comment gérer s'il n'y a pas ^ dans le même champ?


@Dinesh. . . Re-Copiez le code et essayez-moi, j'ai édité le code récemment.


@YOGESHSHARMA. . . Merci.


Si j'ai une autre chose comme ça ... Test1 ^ Test2 ^ Test3 ^. Je veux de la sortie = Test3. Dans certaines lignes, je n'ai que Test1 et d'autres lignes ayant des nuls. Ça devrait manipulé.


@Dinesh. . . Ce n'est pas la question que vous avez posée. Cette question semble explicitement vouloir la chaîne après le dernier ^ . Si vous avez une autre question, demandez-la comme une question nouvelle .



1
votes

L'approche la plus facile peut consister à prendre les 10 caractères les plus à droite:

SELECT RIGHT(mycol, 10)
FROM   mytable


0 commentaires

0
votes

Si les dates code> sont limitées en trois parties ( date1 ^ date2 ^ date3 ^ date3 code>) alors vous pouvez utiliser Paysename () :

SELECT t.col, PARSENAME(REPLACE(t.col, '^', '.'), 1)
FROM table t;


1 commentaires

Avez-vous testé cela avec les exemples que l'OP a donné - par exemple, avoir un / - ce n'est pas légal dans les noms d'objets afin que je suppose que le pain-nom échouerait.