Código de SQL - Función número en letras de moneda

1
estrellaestrellaestrellaestrellaestrella(3)

Publicado el 20 de Agosto del 2019gráfica de visualizaciones de la versión: 1
5.924 visualizaciones desde el 20 de Agosto del 2019
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Con esta función podrás la cantidad de números enteros y decimales en letras
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
CREATE FUNCTION [dbo].[CantidadConLetra]
(
	@Numero numeric(18,2)
)
RETURNS Varchar(512)
AS
BEGIN
	DECLARE @lnEntero INT,
	@lcRetorno VARCHAR(512),
	@lnTerna INT,
	@lcMiles VARCHAR(512),
	@lcCadena VARCHAR(512),
	@lnUnidades INT,
	@lnDecenas INT,
	@lnCentenas INT,
	@lnFraccion INT,
	@dec INT
 
	SELECT @lnEntero = CAST(@Numero AS INT), @lnFraccion = (@Numero - @lnEntero) * 100, @lcRetorno = '', @lnTerna = 1
	WHILE @lnEntero > 0
BEGIN /* WHILE */
	SELECT @lcCadena = ''
	SELECT @lnUnidades = @lnEntero % 10
	SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
	SELECT @lnDecenas = @lnEntero % 10
	SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
	SELECT @lnCentenas = @lnEntero % 10
	SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
	SELECT @lcCadena =
		CASE /* UNIDADES */
			WHEN @lnUnidades = 1 AND @lnTerna = 1 THEN 'UNO ' + @lcCadena
			WHEN @lnUnidades = 1 AND @lnTerna <> 1 THEN 'UN ' + @lcCadena
			WHEN @lnUnidades = 2 THEN 'DOS ' + @lcCadena
			WHEN @lnUnidades = 3 THEN 'TRES ' + @lcCadena
			WHEN @lnUnidades = 4 THEN 'CUATRO ' + @lcCadena
			WHEN @lnUnidades = 5 THEN 'CINCO ' + @lcCadena
			WHEN @lnUnidades = 6 THEN 'SEIS ' + @lcCadena
			WHEN @lnUnidades = 7 THEN 'SIETE ' + @lcCadena
			WHEN @lnUnidades = 8 THEN 'OCHO ' + @lcCadena
			WHEN @lnUnidades = 9 THEN 'NUEVE ' + @lcCadena
			ELSE @lcCadena
		END /* UNIDADES */
	SELECT @lcCadena =
		CASE /* DECENAS */
			WHEN @lnDecenas = 1 THEN
			CASE @lnUnidades
			WHEN 0 THEN 'DIEZ '
			WHEN 1 THEN 'ONCE '
			WHEN 2 THEN 'DOCE '
			WHEN 3 THEN 'TRECE '
			WHEN 4 THEN 'CATORCE '
			WHEN 5 THEN 'QUINCE '
			ELSE 'DIECI' + @lcCadena
		END
		WHEN @lnDecenas = 2 AND @lnUnidades = 0 THEN 'VEINTE ' + @lcCadena
		WHEN @lnDecenas = 2 AND @lnUnidades <> 0 THEN 'VEINTI' + @lcCadena
		WHEN @lnDecenas = 3 AND @lnUnidades = 0 THEN 'TREINTA ' + @lcCadena
		WHEN @lnDecenas = 3 AND @lnUnidades <> 0 THEN 'TREINTA Y ' + @lcCadena
		WHEN @lnDecenas = 4 AND @lnUnidades = 0 THEN 'CUARENTA ' + @lcCadena
		WHEN @lnDecenas = 4 AND @lnUnidades <> 0 THEN 'CUARENTA Y ' + @lcCadena
		WHEN @lnDecenas = 5 AND @lnUnidades = 0 THEN 'CINCUENTA ' + @lcCadena
		WHEN @lnDecenas = 5 AND @lnUnidades <> 0 THEN 'CINCUENTA Y ' + @lcCadena
		WHEN @lnDecenas = 6 AND @lnUnidades = 0 THEN 'SESENTA ' + @lcCadena
		WHEN @lnDecenas = 6 AND @lnUnidades <> 0 THEN 'SESENTA Y ' + @lcCadena
		WHEN @lnDecenas = 7 AND @lnUnidades = 0 THEN 'SETENTA ' + @lcCadena
		WHEN @lnDecenas = 7 AND @lnUnidades <> 0 THEN 'SETENTA Y ' + @lcCadena
		WHEN @lnDecenas = 8 AND @lnUnidades = 0 THEN 'OCHENTA ' + @lcCadena
		WHEN @lnDecenas = 8 AND @lnUnidades <> 0 THEN 'OCHENTA Y ' + @lcCadena
		WHEN @lnDecenas = 9 AND @lnUnidades = 0 THEN 'NOVENTA ' + @lcCadena
		WHEN @lnDecenas = 9 AND @lnUnidades <> 0 THEN 'NOVENTA Y ' + @lcCadena
		ELSE @lcCadena
		END /* DECENAS */
	SELECT @lcCadena =
		CASE /* CENTENAS */
			WHEN @lnCentenas = 1 AND @lnUnidades = 0 AND @lnDecenas = 0 THEN 'CIEN ' +@lcCadena
			WHEN @lnCentenas = 1 AND NOT(@lnUnidades = 0 AND @lnDecenas = 0) THEN'CIENTO ' + @lcCadena
			WHEN @lnCentenas = 2 THEN 'DOSCIENTOS ' + @lcCadena
			WHEN @lnCentenas = 3 THEN 'TRESCIENTOS ' + @lcCadena
			WHEN @lnCentenas = 4 THEN 'CUATROCIENTOS ' + @lcCadena
			WHEN @lnCentenas = 5 THEN 'QUINIENTOS ' + @lcCadena
			WHEN @lnCentenas = 6 THEN 'SEISCIENTOS ' + @lcCadena
			WHEN @lnCentenas = 7 THEN 'SETECIENTOS ' + @lcCadena
			WHEN @lnCentenas = 8 THEN 'OCHOCIENTOS ' + @lcCadena
			WHEN @lnCentenas = 9 THEN 'NOVECIENTOS ' + @lcCadena
			ELSE @lcCadena
		END /* CENTENAS */
	SELECT @lcCadena =
		CASE /* TERNA */
			WHEN @lnTerna = 1 THEN @lcCadena
			WHEN @lnTerna = 2 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL '
			WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
			@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0 THEN @lcCadena + ' MILLON '
			WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
			NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) THEN @lcCadena+ ' MILLONES '
			WHEN @lnTerna = 4 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL MILLONES '
			ELSE ''
		END /* MILLARES */
	--print @lcCadena
	SELECT @lcRetorno = @lcCadena + @lcRetorno
	SELECT @lnTerna = @lnTerna + 1
	END /* WHILE */
	SELECT @dec =(@Numero - CONVERT(Int,@Numero)) * 100
	If @dec > 0
		If @dec <  10
			SELECT @lcRetorno = @lcRetorno + ' CON 0' + RTrim(CONVERT(VARCHAR,@dec)) + '/100 SOLES.'
		else
		SELECT @lcRetorno = @lcRetorno + ' CON ' + RTrim(CONVERT(VARCHAR,@dec)) + '/100 SOLES.'
	ELSE
		SELECT @lcRetorno = @lcRetorno + ' CON 0' + RTrim(CONVERT(VARCHAR,@dec)) + '/100 SOLES.'
		SELECT @lcRetorno = Upper(Substring(@lcRetorno, 1, 1)) + Substring(@lcRetorno, 2,Len(@lcRetorno))
	RETURN RTRIM(@lcRetorno)
END
GO



Comentarios sobre la versión: 1 (3)

Harwing
22 de Agosto del 2019
estrellaestrellaestrellaestrellaestrella
Excelente aporte
Responder
Sergio
5 de Febrero del 2020
estrellaestrellaestrellaestrellaestrella
buen aporte
Responder
JOse
25 de Febrero del 2020
estrellaestrellaestrellaestrellaestrella
Excelente , funciona bien pero sin decimales...... Gracias
Responder

Comentar la versión: 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s5484