SQL Server 2012
У меня есть 3 столбца в моей таблице, которые будут использовать функцию. '[usr].[Udf_OverPunch]'. и подстрока.
Вот мой код:
[usr].[Udf_OverPunch](SUBSTRING(col001, 184, 11)) as REPORTED_GAP_DISCOUNT_PREVIOUS_AMOUNT
Эта функция работает надлежащим образом для того, что мне нужно. В основном это преобразование символов или букв в назначенное число на основе словаря данных.
Проблема, с которой я сталкиваюсь, заключается в том, что есть ведущие нули. Я только что задал вопросы о начальных нулях, но это не позволит мне сделать это с функциональными столбцами, потому что символы не могут быть преобразованы в int.
Это то, что я использую, чтобы избавиться от ведущих нулей (но оставить один ноль) в моем коде для других столбцов:
cast(cast(SUBSTRING(col001, 217, 6) as int) as varchar(25)) as PREVIOUS_REPORTING_PERIOD
Это хорошо работает при преобразовании значения «000000» в один «0» или значения «000060» в «60», но не будет работать с функцией из-за символа или буквы (при попытке преобразования в int).
Как я уже упоминал, у меня есть 3 столбца, которые выдают значения, которые выглядят примерно так, когда функция не используется:
'0000019753{'
'0000019748G'
'0000019763H'
Моя цель здесь состоит в том, чтобы использовать функцию, а также удалить начальные нули (если они не все нули, тогда оставьте один ноль).
Это то, что я пытался сделать, но это не работает, потому что значение содержит символ, который не является целым числом:
[usr].[Udf_OverPunch]cast(cast(SUBSTRING(col001, 184, 6) as int) as varchar(25)) as REPORTED_GAP_DISCOUNT_PREVIOUS_AMOUNT,
Пожалуйста, дайте мне знать, если у вас есть идеи или вам нужна дополнительная информация. :)