none
Formátování celého čísla

    Dotaz

  • Dobrý den,

    potřeboval bych přímo v dotazu naformátovat číslo "1234567" aby výsledek byl "1 234 567"

    Je to typ int, takže bez desetiných míst, jen oddělovače tisíců. Jak na to? Potřebuji jej přímo v dotazu posléze spojit s jiným sloupcem nvarchar, takže přetypování nevadí.

    Díky Petr

    úterý 19. února 2013 12:57

Odpovědi

  • Asi to není úplně ideální řešení, ale udělal jsem na to funkci takto:

    CREATE FUNCTION [dbo].[Tisice]
    (
    	-- Add the parameters for the function here
    	@Cislo bigint
    )
    RETURNS nvarchar(25)
    AS
    BEGIN
    	DECLARE @Vystup nvarchar(25) = '';
    	DECLARE @PrevedeneCislo nvarchar(50) = '';
    
    	SELECT @PrevedeneCislo = CONVERT(nvarchar(18),@Cislo)
        SELECT @PrevedeneCislo = RIGHT('                  ' + @PrevedeneCislo,18)
        SELECT @Vystup = ''
        SELECT @Vystup = SUBSTRING(@PrevedeneCislo,16,3)
        SELECT @Vystup = SUBSTRING(@PrevedeneCislo,13,3) + ' ' + @Vystup
        SELECT @Vystup = SUBSTRING(@PrevedeneCislo,10,3) + ' ' + @Vystup
        SELECT @Vystup = SUBSTRING(@PrevedeneCislo, 7,3) + ' ' + @Vystup
        SELECT @Vystup = SUBSTRING(@PrevedeneCislo, 4,3) + ' ' + @Vystup
        SELECT @Vystup = SUBSTRING(@PrevedeneCislo, 1,3) + ' ' + @Vystup
    	-- Return the result of the function
    	SELECT @Vystup = LTRIM(@Vystup)
    	RETURN @Vystup
    Třeba se to bude někomu hodit.
    • Označen jako odpověď Petr BRABEC pondělí 25. března 2013 10:39
    pondělí 25. března 2013 10:38

Všechny reakce

  • Asi to není úplně ideální řešení, ale udělal jsem na to funkci takto:

    CREATE FUNCTION [dbo].[Tisice]
    (
    	-- Add the parameters for the function here
    	@Cislo bigint
    )
    RETURNS nvarchar(25)
    AS
    BEGIN
    	DECLARE @Vystup nvarchar(25) = '';
    	DECLARE @PrevedeneCislo nvarchar(50) = '';
    
    	SELECT @PrevedeneCislo = CONVERT(nvarchar(18),@Cislo)
        SELECT @PrevedeneCislo = RIGHT('                  ' + @PrevedeneCislo,18)
        SELECT @Vystup = ''
        SELECT @Vystup = SUBSTRING(@PrevedeneCislo,16,3)
        SELECT @Vystup = SUBSTRING(@PrevedeneCislo,13,3) + ' ' + @Vystup
        SELECT @Vystup = SUBSTRING(@PrevedeneCislo,10,3) + ' ' + @Vystup
        SELECT @Vystup = SUBSTRING(@PrevedeneCislo, 7,3) + ' ' + @Vystup
        SELECT @Vystup = SUBSTRING(@PrevedeneCislo, 4,3) + ' ' + @Vystup
        SELECT @Vystup = SUBSTRING(@PrevedeneCislo, 1,3) + ' ' + @Vystup
    	-- Return the result of the function
    	SELECT @Vystup = LTRIM(@Vystup)
    	RETURN @Vystup
    Třeba se to bude někomu hodit.
    • Označen jako odpověď Petr BRABEC pondělí 25. března 2013 10:39
    pondělí 25. března 2013 10:38
  • A co upgrade na SQL Server 2012 a využití funkce FORMAT() ?

    http://msdn.microsoft.com/en-us/library/hh213505.aspx

     
    neděle 21. dubna 2013 13:54