tsql: лучший способ бросить переменные к строковому типу?

Внутреннее объединение только показывает строки, если существует запись соответствия на другом (справа) сторона соединения.

А (слева) внешнее объединение показывает строки для каждой записи на левой стороне, даже при отсутствии строк соответствия на другом (справа) стороны соединения. Если бы нет никакой строки соответствия, столбцы для другого (справа) примыкают, показал бы, АННУЛИРУЕТ.

12
задан phill 12 August 2009 в 21:15
поделиться

3 ответа

Заглавные буквы - это буквальный текст, строчные буквы - это то, в что вам следует интерполировать значение:

CAST(expression AS CHAR)
-- or:
CAST(expression AS VARCHAR)

Вы можете дополнительно указать длину.

К сожалению, с datetimes, если вы хотите отформатировать его каким-либо образом, отличным от представления по умолчанию.

Моя информация взята с сайта MSDN . Я думаю, вам придется внимательно прочитать этот и другие сайты и немного поэкспериментировать с ними, но, надеюсь, функция CAST станет хорошим началом.

Удачи!

27
ответ дан 2 December 2019 в 05:28
поделиться

вам нужно каждый раз преобразовывать / преобразовывать. Я создал функцию для использования:

CREATE FUNCTION QuoteNull
(
     @InputStr      varchar(8000)  --value to force to string
)
RETURNS
varchar(8000)
AS

BEGIN
    RETURN COALESCE(''''+@InputStr+'''','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
1
ответ дан 2 December 2019 в 05:28
поделиться

Я не думаю, что есть - и если бы это было так, я бы не стал ему доверять, поскольку, вероятно, было бы очень мало контроля над общим форматированием. Создайте свой собственный, и он будет выглядеть именно так, как должен выглядеть. Факторы, на которые следует обратить внимание:

  • Форматирование даты
  • Числа, начальные нули, десятичные разряды, знаки +/-
  • Длина строки, перенос слов
  • Начальные пробелы, конечные пробелы, пробелы между строками, у которых нет ведущих или конечные пробелы

... это продолжается и продолжается.

0
ответ дан 2 December 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: