Привет всем. У меня запрос, как показано ниже, где я проверяю, имеет ли значение значение NULL или пусто
SELECT CASE WHEN LSTR = '' THEN 0 ELSE LSTR END AS left_string, CASE WHEN RSTR = '' THEN 0 ELSE RSTR END AS right_string FROM table
cross apply (
SELECT
CAST(LEFT(colsetting, CHARINDEX('/', colsetting) -1) AS INT) LSTR
, CAST(SUBSTRING(colsetting, CHARINDEX('/', colsetting) +1, 200) AS INT) RSTR
) ca1
WHERE
CHARINDEX('/', colsetting) > 0
Первоначально у меня есть это, но когда я получаю немного conversion error
, я написал выше
DECLARE @setting nvarchar(100)='80/ '
SELECT CAST(CAST(SUBSTRING(isnull(@setting,0), 0, CHARINDEX('/',isnull(@setting,0))) AS DECIMAL(3, 0)) AS INT)
SELECT CAST(CAST(SUBSTRING(isnull(@setting,0), CHARINDEX('/',isnull(@setting,0),0) + 1, CHARINDEX('/',isnull(@setting,0),0)) AS DECIMAL(3, 0)) AS INT)
Мои значения настроек могут быть 80/80
или 80/
или /80
, когда я выполняю скрипт, мне нужно, чтобы я хотел отображать значения отдельно либо по первому запросу, либо по второму. Второй - проблема конверсии, первый работает нормально, но я хотел бы знать, есть ли лучший подход
SQL скрипка http://sqlfiddle.com/#!18/45e87/1
С обоими запросами http://sqlfiddle.com/#!18/45e87/2