Sprache: C#
Mit diesem Snippet kann man eine IBAN überprüfen, ob die Checksumme bzw. Prüfsumme für diese IBAN korrekt ist.
Aufruf:
[code]MyExtensions.IbanChecksumCheck("DE68 2105 0170 0012 3456 78");[/code]
oder
[code]"DE68 2105 0170 0012 3456 78".IbanChecksumCheck();[/code]
public static class MyExtensions
{
/// <summary>
/// Bestimmt ob die Checksumme einer IBAN gültig ist
/// </summary>
/// <param name="iban">Der zu prüfende IBAN (z.B: "DE68 2105 0170 0012 3456 78")</param>
/// <returns><c>True</c>, wenn <paramref name="value"/> gültig ist. Andernfalls <c>False</c>.</returns>
public static bool IbanChecksumCheck(this string iban)
{
string ibanCleared = iban.ToUpper().Replace(" ","").Replace("-","");
string ibanSwapped = ibanCleared.Substring(4)+ibanCleared.Substring(0,4);
string sum = ibanSwapped.Aggregate("", (current, c) => current + (char.IsLetter(c) ? (c - 55).ToString() : c.ToString()));
var d = decimal.Parse(sum);
return ((d % 97) == 1);
}
}
public static class MyExtensions
{
/// <summary>
/// Bestimmt ob die Checksumme einer IBAN gültig ist
/// </summary>
/// <param name="iban">Der zu prüfende IBAN (z.B: "DE68 2105 0170 0012 3456 78")</param>
/// <returns><c>True</c>, wenn <paramref name="value"/> gültig ist. Andernfalls <c>False</c>.</returns>
public static bool IbanChecksumCheck(this string iban)
{
string ibanCleared = iban.ToUpper().Replace(" ","").Replace("-","");
string ibanSwapped = ibanCleared.Substring(4)+ibanCleared.Substring(0,4);
string sum = ibanSwapped.Aggregate("", (current, c) => current + (char.IsLetter(c) ? (c - 55).ToString() : c.ToString()));
var d = decimal.Parse(sum);
return ((d % 97) == 1);
}
}
Alte URL:
/snippet/iban-checksumme-pruefen/3809
Hier eine Übersetzung in T-SQL von Andreas Henke, danke dafür!
[code]
/****** Object: UserDefinedFunction [dbo].[checkIban] Script Date: 07.09.2021 13:54:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
— =============================================
— Author: Andreas Henke
— Create Date: 07.09.2021
— Description: Berechnung der Prüfziffer für IBAN
— =============================================
CREATE FUNCTION [dbo].[checkIban]
(
@iban nvarchar(50)
)
RETURNS bit
AS
BEGIN
— Declare the return variable here
DECLARE @result bit
–tribute to pocki_c at https://dotnet-snippets.de/snippet/iban-checksumme-pruefen/3809
DECLARE @ibanCleared nvarchar(22)
set @ibanCleared = Replace(Replace(Upper(@iban),‘ ‚,“),‘-‚,“);
Declare @ibanSwapped nvarchar(24)
Set @ibanSwapped = Substring(@ibanCleared,5,18)+Convert(nvarchar(2),ASCII(Substring(@ibancleared,1,1))-55)+Convert(nvarchar(2),ASCII(Substring(@ibancleared,2,1))-55)+’00‘
Declare @d decimal(24,0)
set @d= TRY_CAST(@ibanSwapped as decimal(24,0))
SELECT @result = case when (98-(@d % 97) = TRY_CAST(Substring(@ibanCleared,3,2) as decimal(2,0))) then 1 else 0 end
RETURN @result
END
GO
[/code]