2011-09-24 3 views
3

Je sais que dans SQLite, nous utilisons la fonction LENGTH au lieu de len. Mais quand je veux utiliser la fonction LENGTH avec une sous-requête comme ceci:Convertir une expression SQL si elle a une fonction LENGTH avec requête SUBSELECT à SQLite

select length(select name from tblNames where name=1) 

Je reçois une erreur. Voici la version Microsoft SQL de l'expression:

iif(len((select BilgiAcik from DigerBilg where BilgTip=12 and BilgDgr=Cstr(Dr.Fr)))>0,(select BilgiAcik from DigerBilg where BilgTip=12 and BilgDgr=Cstr(Dr.Fr)),Cstr(Dr.Fr)) as Fr, 

I converti l'expression ci-dessus dans SQLite comme si:

(case length((select BilgiAcik from DigerBilg where BilgTip=12 and BilgDgr=CAST(Dr.Fr as TEXT))>0 (select BilgiAcik from DigerBilg where BilgTip=12 and BilgDgr=Cstr(Dr.Fr)) else CAST(Dr.Fr as TEXT) end) as Fr, 

Ce que je suis-je tort au sujet? Est-ce que je ne peux pas simplement utiliser la requête SUBSELECT avec la fonction LRNGTH? Des suggestions sur la façon de résoudre ce problème?

Répondre

2

Vous voulez restructurer votre déclaration pour être plus semblable à ce qui suit.

select length(name) from (select name from tblnames where name=1); 

Vous pouvez gérer cela un peu plus facilement en aliasant les sous-sélections si vous le souhaitez.

select length(t.name) from (select name from tblnames where name=1) as t; 
+1

merci beaucoup –

Questions connexes