2010-07-12 5 views

Répondre

1

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)

1
+0

merci ce lien m'a aidé – Soph

+0

@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

0

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

+0

Juste essayé sur DB2 AS400 et cela ne fonctionne pas. – Soph

+0

Malheureusement, CHARINDEX() n'est pas une fonction SQL valide. C'est seulement une extension dans quelques SGBD tels que SQL Server et Sybase. – user2338816

Questions connexes