Nvarchar in numeric formatieren

IchHH

Datenbank-Guru
Beiträge
282
Hallo ihr lieben,

ich versuche gerade mittels

Code:
Select Bankv_id, BankV_IBAN,
Format(Convert(numeric(5),left(right(BankV_IBAN,18),5)),'00000') as [1-5],
Format(Convert(numeric(5),left(right(BankV_IBAN,13),5)),'00000') as [6-10],
Format(Convert(numeric(5),left(right(BankV_IBAN,8),5)),'00000') as [11-15],
Format(Convert(numeric(5),left(right(BankV_IBAN,3),3)),'000') as [16-18],
Convert(numeric(2),ascii(left([BankV_IBAN],1))-55) as [21-22],
Convert(numeric(2),ascii(right(LEFT([BankV_IBAN],2),1))-55) as [23-24],
Format(Convert(numeric(2),right(left(BankV_IBAN,4),2)),'00') as [19-20]
--into zub
From     [dbo].[ST_BankV] As [BankV_1]
Where    [BankV_1].[BankV_IBAN] Like 'DE%'
And    [BankV_1].[BankV_gültig_bis] >= GetDate()
And    IsNumeric(Right([BankV_1].[BankV_IBAN]
,    20)) = 1

eine Umformatierung von Nvarchar ins Numeric vorzunehmen, was leider nicht funktioniert. Weiß jemadn warum nicht?
 
Werbung:
Hallo akretschmar,

genau das hatte ich vor. Zuerst habe ich es an einem Stück bzw. in einem Code versucht nur das gab es dann einen Überlauffehler. Der obige Code ist einer von zwei bzw. drei Schritten zur Berechnung einer Prüfziffer.
 
also ich hab grad mal meine überprüft (sorry, mit einigen XXX):

Code:
test=*# select 98 - (substring(regexp_replace('DE15 8509 0000 2958 85XXXX','[^0-9]','','g'),3) || '131400')::numeric % 97 as pruefziffer;
 pruefziffer
-------------
          15
(1 row)

Prüfziffer stimmt soweit auch. Vielleicht hilft es Dir ...
 
Hallo akretschmer,

leider nicht weil er z.B. "regexp_replace" nicht als funktion erkennt. Die beiden Senkrechten Strich sagen mir auch nichts. Ich habe es aber nun dennoch hinbekommen. Ich habe einfach convertierung auf Convertierung auf Format gesetzt. Dann klappte es.

Das ganze sieht dann wie folgt aus:
Code:
Drop Table #zub
Select Bankv_id, BankV_IBAN,
Convert(numeric(18),Format(Convert(numeric(18),right(BankV_IBAN,18)),'000000000000000000')) as [1-18],
Convert(numeric(2),ascii(left([BankV_IBAN],1))-55) as [21-22],
Convert(numeric(2),ascii(right(LEFT([BankV_IBAN],2),1))-55) as [23-24],
Convert(numeric(2),Format(Convert(numeric(2),right(left(BankV_IBAN,4),2)),'00')) as [19-20]
into #zub
From     [dbo].[ST_BankV] As [BankV_1]
Where    [BankV_1].[BankV_IBAN] Like 'DE%'
And    [BankV_1].[BankV_gültig_bis] >= GetDate()
And    IsNumeric(Right([BankV_1].[BankV_IBAN]
,    20)) = 1

drop Table #zub
Select
Convert(numeric(24),Concat([1-18],[21-22],[23-24],Format(convert(numeric(2),[19-20]),'00'))) as IBAN_num
,BankV_IBAN
,BankV_id into #zub2
from zub
Group by BankV_id,[1-18],[19-20],[21-22],[23-24],BankV_Iban

Select BankV_id,BankV_Iban, sum(Iban_num) % 97 as IBAN_Check
from #zub2
Group by BankV_id, BankV_IBAN
Having sum(Iban_num) % 97 <> 1
 
Werbung:
Zurück
Oben