2010-11-18 5 views
0

J'utilise la méthode SUBSTR dans la requête SQL, mais grâce à la longue chaîne, elle donne ci-dessous erreur:erreur Oracle SUBSTR pour une longue chaîne

ERROR: ORA-01704: string literal too long.

SQL: select * from table where tn=SUBSTR('....LONG STRING....',1,12)

s'il vous plaît suggérer une solution de rechange pour permettre substring sur une longue chaîne dans Oracle requête SQL .

Merci

Praveen

+0

Suggestion: Convertissez-le en 12 caractères car vous voulez que le 1er 12 lâche tout le reste ... Selon le SGBDR ... 'Sélectionnez * dans la table où tn = cast (longstring comme varchar2 (12))' – xQbert

Répondre

0

Le message d'erreur indique que le littéral chaîne est trop longue (pas une limitation de la fonction SUBSTR). Pouvez-vous utiliser une variable de liaison au lieu d'un littéral?

select * from table where tn = substr(?, 1, 12) 

sql.setString(1, theLongString); 

Ou peut-être pas même la sous-chaîne côté client:

select * from table where tn = ? 

sql.setString(1, theLongString.substring(0,12)); 
0

Peut-être que vous pouvez le mettre dans un champ de table ou variable et utiliser SUBSTR à ce sujet?

0

Si vous devez utiliser un littéral de chaîne, vous serez lié à la limite de 4 000 caractères sauf si, comme le suggère Thilo, vous utilisez des variables de liaison.

Si vous traitez des données à partir d'une table, vous pouvez utiliser un CLOB et DBMS_LOB.SUBSTR à la place.

Questions connexes