i ont le même type de chaîne abc_01, abcd_01 ou 02 maintenant je veux la sous-chaîne jusqu'à _ abc_-à-dire, abcd_ etc. J'utilise db2 AS400 .Please suggère le traitement par DROITE ou GAUCHE fonctionBase de données: jusqu'à SUBSTRING première occurence de caractère
Répondre
Utilisez la fonction intégrée POSITION. Le format est:
POSITION--(--search-string--IN--source-string--)
ou
POSSTR--(--source-string--,--search-string--)
Je suggère également d'utiliser une structure CASE pour vérifier quand il n'y a pas _ ou si elle est au début ou à la fin. Voici un exemple. Nous supposerons, pour les besoins de l'exemple, que le champ en question est créativement nommé FIELD1 et qu'il n'autorise pas les valeurs NULL.
SELECT
CASE WHEN POSITION('_' IN FIELD1) = 0 THEN FIELD1
WHEN POSITION('_' IN FIELD1) = 1 THEN ''
ELSE LEFT(FIELD1, POSITION('_' IN FIELD1)-1) END AS "Left Side",
CASE WHEN POSITION('_' IN FIELD1) < 1 THEN ''
WHEN POSITION('_' IN FIELD1) = LENGTH(FIELD1) THEN ''
ELSE RIGHT(FIELD1, LENGTH(FIELD1)-POSITION('_' IN FIELD1)) END AS "Right Side"
FROM MYTABLE1
Votre question a demandé l'utilisation des fonctions intégrées GAUCHE et DROITE, c'est ce que l'exemple utilise. Pour le côté droit, je suggère que l'utilisation de SUBSTRING est plus facile et plus lisible. Cela ressemblerait à ceci: SUBSTRING (FIELD1, POSITION ('_' IN FIELD1) +1)
SELECT SUBSTRING('Hello',0,CHARINDEX('o','Hello',0))
Renvoie "Hell" dans SQL. Je ne suis pas sûr de db2 as400, mais vous avez également marqué "SQL". Espérons que cela aide
Juste essayé sur DB2 AS400 et cela ne fonctionne pas. – Soph
Malheureusement, CHARINDEX() n'est pas une fonction SQL valide. C'est seulement une extension dans quelques SGBD tels que SQL Server et Sybase. – user2338816
- 1. Correspondance entre les séquences char - première occurence avant
- 2. & (esperluette) caractère ne base de données insérait
- 3. CrystalReports pied de groupe show .NET uniquement sur la première occurence
- 4. Comment ajouter html à la première occurence de chaîne après élément sélectionné
- 5. Récupérer le caractère allemand de la base de données Oracle
- 6. Base de données manquante! Trouver la cause première
- 7. supprimer de la chaîne première occurrence de caractère donné
- 8. Databinder.Eval et Substring
- 9. mySQL substring & instr problème
- 10. sql et base de données
- 11. Substring outofindex
- 12. javascript substring
- 13. Argument de données de type uniqueidentifier est invalide pour l'argument 1 de la fonction substring
- 14. substring parenthésée de JavaScript matches de
- 15. Problèmes de base de données lors de la première configuration de Phusion Passenger
- 16. Comment interroger une base de données SQL pour retourner la première "page" contenant les données spécifiées?
- 17. Migration de base de données MySQL UTF8
- 18. Sql Server - Supprimer le caractère de fin de chaîne "\ 0" à partir des données
- 19. sélection de la première colonne de toutes les tables dans une base de données mysql
- 20. Problème avec Substring() - ArgumentOutOfRangeException
- 21. Comment puis-je substring un TCHAR
- 22. Sharepoint colonne calculée Substring
- 23. Javascript substring() trickery
- 24. Comparaison Substring en python
- 25. xslt: substring-before
- 26. Ajout de nouveaux éléments au texte Substring
- 27. Substring dans asp.net
- 28. Création de données d'application lors de la première utilisation
- 29. PHP while boucle omet la première entrée de la base de données MySQL sélectionnez
- 30. .NET C# mysql SUBSTRING me donne System.Byte []?
merci ce lien m'a aidé – Soph
@Soph Cela aurait pu aider, mais ce n'est pas un lien correct pour DB2 sur i. Utilisez la documentation [DB2 on i] (http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_61/rzahg/rzahgdb.htm?lang=fr) lorsque IBM i (AS/400 ou version ultérieure) est la cible Plate-forme. Ce lien est pour DB2 sur i 6.1. Utilisez le centre de documentation approprié pour la version du système d'exploitation si vous avez une cible ultérieure. – user2338816