Dans une requête SQL (DB2), comment puis-je trouver la valeur d'un champ dans un autre domaine?
Dans une requête SQL (DB2), comment puis-je trouver la valeur d'un champ dans un autre domaine?
Par exemple, Field01 contient le numéro de pièce '1234'. Field02 contient "c'est mon 1234 pour garder la"
Comment puis-je trouver ou rechercher quelle est la valeur de Field01 dans Field02?
J'ai essayé de LOCALISER et de COMME et % % et de Position, mais ne semble pas à l'obtenir.
J'ai été en mesure de trouver Field01 dans Field02 tant qu'il est au début de l'Field02, mais pas si il est procédé par d'autres caractères.
C'est la commande que j'ai utilisé pour cela:
CASE
WHEN LEFT ( TRIM ( FIELD02), CHARACTER_LENGTH ( TRIM ( FIELD01 ) ) ) =
TRIM ( WMCPIL ) THEN TRIM ( FIELD02)
ELSE '^'
END
- Avez-vous essayé
CONTAINS
? - Modifier votre question et de montrer un exemple de ce que vous essayé d'utiliser le
LOCATE
fonction.LOCATE(field01,field02)
doit retourner une valeur non nulle si trouvé, et nul si pas découvert.
Vous devez vous connecter pour publier un commentaire.
La
LOCATE
de la fonction de travail:Votre question, les états que vous avez déjà essayé de
LOCATE
; si elle ne fonctionne pas, veuillez expliquer.Ici est une documentation de référence.
Vous pouvez utiliser
LIKE
dans la manière suivante:SQLFiddle démo (à l'aide de PostgreSQL en tant que SQLFiddle ne prend pas en charge DB2 encore, mais cet exemple devrait travailler sur DB2 en tant que bien).
DB2 préfère utiliser
CONCAT
pour concaténer des chaînes, mais il prend également en charge la norme||
comme synonyme.LIKE '%' || field1 || '%'
, souvent l'effet recherché a été atteint au lieu de cela, avec unLIKE '%' || RTRIM(field1) || '%'
ou le plus agressif, le décapage\découpage deLIKE '%' || TRIM(field1) || '%'
Il fonctionne très bien, essayez-
SELECT * from TAB1 OÙ la POSITION(champ1,champ2,CODEUNITS16)<>0