Member 12676820 Ответов: 1

Добавить 0 перед номером SQL server 2k8


у меня есть столбец SL nvarchar(5) из tablename

СЛ СЛ
1/2 1/2
3 -- & gt; 03
23 23
5 05

выбирать
(replace(left(REPLACE(STR(sl,3),' ','0'),1),'0','')+
			right(REPLACE(STR(sl,3),' ','0'),2)) as slmax

от имени таблицы

Что я уже пробовал:

но это не сработало, я не могу решить 1/2 с помощью SL(nvarchar). помочь мне

Kornfeld Eliyahu Peter

Не совсем понятно, чего вы ожидаете...
Прежде всего кажется, что вы работаете со строками (так как 1/2-это число только для вас, но для SQL это строка)...
Вы должны отредактировать вопрос и четко показать, какой результат вы ожидаете на каком входе...

Member 12676820

(заменить (слева (заменить (STR(sl,3),' ','0'),1),'0',")+справа (заменить(STR(sl,3),' ','0'),2)) как slmax- & gt; Это нормально номер типа, но с" 1/2 " nvarchar-> ошибка
когда я использую тип SL (nvarchar), но результат не может преобразовать тип данных nvarchar в float.

1 Ответов

Рейтинг:
1

OriginalGriff

Не делайте этого в SQL: сделайте это в своем программном обеспечении для презентаций, где это намного проще, так как у вас будут гораздо лучшие средства обработки строк и преобразования данных.
В C#, например, это довольно тривиально: попробуйте преобразовать строку в целое число: если это не удастся, оставьте ее в покое. Если это удастся, преобразуйте его в строку, содержащую по крайней мере две цифры:

int x;
string result = int.TryParse(input, out x) ? x.ToString("D2") : input;

Это функция представления, а не функция хранения данных, и ее следует обрабатывать как таковую.
Просто потому, что это может быть сделано в SQL, это не значит, что это должно быть сделано!