Преобразовать выражение SQL, если оно имеет функцию LENGTH с запросом SUBSELECT, в SQLite - PullRequest
3 голосов
/ 24 сентября 2011

Я знаю, что в SQLite мы используем функцию LENGTH вместо len.Но когда я хочу использовать функцию LENGTH с таким подзапросом, как:

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

, я получаю сообщение об ошибке.Вот версия выражения Microsoft SQL:

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,

Я преобразовал приведенное выше выражение в SQLite следующим образом:

(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,

Что я делаю неправильно?Разве я не могу просто использовать запрос SUBSELECT с функцией LRNGTH?Любые предложения о том, как решить эту проблему?

1 Ответ

2 голосов
/ 24 сентября 2011

Вы захотите реструктурировать свое утверждение, чтобы оно было более похожим на следующее.

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

Вы можете справиться с этим немного легче, если хотите, алиасами для подвыборов.

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