Недопустимый параметр длины, переданный LEFT или SUBSTRING Error - PullRequest
0 голосов
/ 23 января 2020

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

Concat('https://api.giscloud.com/1/layers/2985288/features/',f.fid,'/mosque_status_photos /',substring(f.mosque_status_photos,1,CharIndex(',',f.mosque_status_photos,0)-1),'?api_key=a2cdb99935fec159f9557b24fae90f00')

, а также пробую функцию case bt, все еще получая ошибку

case when isnull(f.mosque_status_photos,'0') is null
then '0' else 
Concat('https://api.giscloud.com/1/layers/2985288/features/',f.fid,'/mosque_status_photos    /',substring(f.mosque_status_photos,1,CharIndex(',',f.mosque_status_photos,0)- 1),'?api_key=a2cdb99935fec159f9557b24fae90f00') end

я использовал isnull Funcation как хорошо, но все еще получаю ошибку

Concat('https://api.giscloud.com/1/layers/2985288/features/',f.fid,'/mosque_status_photos/',substring(isnull(f.mosque_status_photos,'0'),1,CharIndex(',',isnull(f.mosque_status_photos,'0'),0)-1),'?api_key=a2cdb99935fec159f9557b24fae90f00') 

1 Ответ

1 голос
/ 23 января 2020

Ваша инструкция case неверна для начала, если она преобразует все нулевые значения в символ '0', а затем проверяет, является ли результат нулевым, что никогда не будет так.

Возможно, что вы хотите чего-то как (при условии, что вы ищете запятые в столбце mosque_status_photos ..

CASE WHEN f.mosque_status_photos not like ',' 
          OR CharIndex(',',f.mosque_status_photos,0) <=1
          OR LEN(LTRIM(RTRIM(mosque_status_photos))) = 0
     THEN '0'
     ELSE [original code for valid entries here]
     END
...