Tsql: лучший способ приведения переменных в тип строки?
Я написал процедуру tsql, которая вставляет строку в текстовый файл, что означает, что все переменные должны быть преобразованы в строку. Вместо использования аргумента case case, проще ли это сделать, охватывая все случаи и заставляя любой тип вводить тип строки?
заблаговременно
Ответы
Ответ 1
All-caps - это буквальный текст, в нижнем регистре - что-то, в которое вы должны интерполировать значение:
CAST(expression AS CHAR)
-- or:
CAST(expression AS VARCHAR)
Можно указать длину.
К сожалению, это немного сложнее с datetime, если вы хотите отформатировать его каким-либо образом, отличным от представления по умолчанию.
Моя информация была получена с
Ответ 2
вам нужно конвертировать/отсылать его каждый раз. Я использовал функцию:
CREATE FUNCTION QuoteNull
(
@InputStr varchar(8000) --value to force to string
)
RETURNS
varchar(8000)
AS
BEGIN
RETURN COALESCE(''''[email protected]+'''','null')
END
он помещает одинарные кавычки вокруг значения или просто слово null, если оно равно null, но вы можете его настроить по мере необходимости.
вот версия, которая автоматически обрабатывает даты форматирования:
CREATE FUNCTION QuoteNull
(
@InputStr sql_variant --value to force to string
)
RETURNS
varchar(8000)
AS
BEGIN
DECLARE @String varchar(8000)
SET @String=COALESCE(''''+ CASE SQL_VARIANT_PROPERTY(@InputStr,'BaseType')
WHEN 'datetime' THEN CONVERT(varchar(23),@InputStr,121)
ELSE CONVERT(varchar(8000),@InputStr)
END
+'''','null')
RETURN @String
END
Ответ 3
Я не думаю, что есть, и если бы это было так, я бы не стал им доверять, так как, вероятно, будет очень мало контроля над общим форматированием. Создайте свой собственный, и он будет выглядеть так, как нужно. Факторы, которые следует учитывать:
- Форматирование даты
- Числа, ведущие нули, десятичные знаки, знаки +/-
- Длина строки, перенос слов
- Ведущие пробелы, конечные пробелы, пробелы между строками, которые не имеют ведущих или конечных пробелов
... он продолжается и продолжается.