Числа формата SQL должны иметь квадратные скобки

String a = new String("foo");
String b = new String("foo");
System.out.println(a == b); // prints false
System.out.println(a.equals(b)); // prints true

Убедитесь, что вы понимаете, почему. Это потому, что сравнение == сравнивает только ссылки; equals() метод сопоставляет содержимое по символу.

Когда вы вызываете new для a и b, каждый получает новую ссылку, указывающую на "foo" в таблице строк. Ссылки разные, но контент один и тот же.

0
задан Zeki Gumus 17 January 2019 в 10:24
поделиться

1 ответ

Сделайте скалярную функцию для использования каждый раз

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
CREATE FUNCTION FormatBracket(@Value as money)
RETURNS varchar(30)
AS
BEGIN
    DECLARE @RETVAL AS varchar(30);
    select
         @retval = case when @VALUE < 0 THEN 
                                    '(' + cast(ABS(@value) as varchar(28)) + ')'
                      else
                                    cast(@value as varchar(28))
                    END;

    RETURN @RETVAL;     

END
GO

, затем

SELECT num, dbo.FormatBracket(num)
AS frmtd
FROM (
SELECT    0 AS num UNION ALL
SELECT  945        UNION ALL
SELECT -945
) tests

Я использовал тип переменной MONEY, который может быть любым числовым типом, я не деньги наверняка были в 2005 году

0
ответ дан Cato 17 January 2019 в 10:24
поделиться
Другие вопросы по тегам:

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