J'ai deux enregistrements de ces données: je le souhaite dans MS SQL
test1^test2^test3^test4 test5 test6^test7 null
3 Réponses :
Vous pouvez utiliser droite () code> et charindex () code>:
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) code> 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 ^ code> 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 i> ^ code>. Si vous avez une autre question, demandez-la comme une question nouvelle i>.
L'approche la plus facile peut consister à prendre les 10 caractères les plus à droite:
SELECT RIGHT(mycol, 10) FROM mytable
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;
Avez-vous testé cela avec les exemples que l'OP a donné - par exemple, avoir un / code> - ce n'est pas légal dans les noms d'objets afin que je suppose que le pain-nom échouerait.