|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Здраствуйте, Я пытаюс написать процедуру для проверки международного банковского кода IBAN вроде: create procedure CheckIBAN(IBAN varchar(22)) RETURNS (result integer) но я не знаю как сделать математические действия с число, которое содержит 35 цифр Прошу помочь и извините мой плохой руский Антон ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 10:13 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Anton_bg, на PSQL можно конечно извратится и написать деление больших чисел, но скорее всего это эффективно работать не будет. Поэтому проще сделать либо UDF, либо контролировать на клиенте. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 10:24 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Симонов Денис, Я тоже так думаю. Я давно написал UDF для етой проверки, но я стараюс избавится от ползования всех UDF. Так как я стараюс сделать все проверки данных независимых от клиента я хочу сделат и проверка iban в базе данных ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 10:43 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Anton_bgЯ давно написал UDF для етой проверкиАлгоритм? можно ссылочку на описание, блок-схему или исходник УДФ. Может там ничего страшного и нет, да и вряд ли потребуется проверять миллионы циферок. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 11:13 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Anton_bgно я не знаю как сделать математические действия с число, которое содержит 35 цифр Вероятно, в iban-е есть контрольное число которое вычисляется по модулю 11 или что-то подобное. Если так, то хранить можно в varchar-е, а действия - брать посимвольно, и вычислять то что надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 11:19 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
S.G.контрольное числоЕсл все так просто, то проблем нет. ИНН проверяем запросто Код: sql 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. 114. 115. 116. 117. 118. 119.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 11:27 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Алгоритм таков: Например IBAN BG33AAАА12311012345678 Шаг 1 Первые 4 символа перемещаются позади: BG33AAАА12311012345678 -> AAАА12311012345678BG33 Шаг 2 Все буквы заменяются на цифры по следующей таблице A= 10 G = 16 M = 22 S = 28 Y = 34 B = 11 H = 17 N = 23 T = 29 Z = 35 C = 12 I = 18 O = 24 U = 30 D = 13 J = 19 P = 25 V = 31 E = 14 K = 20 Q = 26 W = 32 F = 15 L = 21 R = 27 X = 33 AAАА12311012345678BG33 -> 1010101012311012345678111633 Шаг 3 С полученого числя вычисляетса модул 97. Шаг 4 Если остаток при делении по модул 97 = 1 то IBAN корректный в противном случае IBAN не корректный Етот алгоритм ползуется при проверке любого номера IBAN в ЕС Длина номера IBAN варирует в разные страны, но максимално можетѝ быт 34 символов. Первые два символа код державы (в примере BG - Болгария), следущие два контрольное число (в примере 33) следующие четыре BIC код банка (в примере AAAA) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 11:39 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Anton_bg, держи. Но это функция для тройки написана. Большой сложности переписать в ХП думаю не возникнет Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Ivan_Pisarevsky, там надо число получить остаток от деления числа на 97 http://www.morfoedro.it/doc.php?lang=ru&n=219 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 11:40 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyS.G.контрольное числоЕсл все так просто, то проблем нет. ИНН проверяем запросто Оказалось, что по модую 97. Оставлю парочку ссылок для топикстартера: IBAN-bg авторКонтролните цифри се изчисляват чрез MOD-97-10 съгласно стандарта ISO/IEC 7064:2003, който указва набор от системи способни да защитят низ от символи срещу грешки, които се случват при копирането на данни. Вычисление контрольных сумм для ЕГН, ЛНЧ и IBAN вычисление модуля большого числа - пример авторТа, нека имаме числото 1234567890123456789012345678 Хващаш първите няколко символа, да кажем 4 и делиш по модул 97: 1234 mod 97 = 70 това 70 го умножаваш по 10 000 = 70 000. Добавяш следващата 4-ка и пак делиш: 705 678 mod 97 = 3 3 * 10 000 + 9012 => 39 012 mod 97 = 18 18 * 10 000 + 3456 => 183 456 mod 97 = 29 29 * 10 000 + 7890 => 297 890 mod 97 = 3 3 * 10 000 + 1234 => 31 234 mod 97 = 0 0 * 10 000 + 5678 => 5 678 mod 97 = 52 1234567890123456789012345678 mod 97 = 52 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 11:43 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Спасибо, Я не знал как вычислить модул 97 с длинного числа и теперь понял Огромное спасибо Я понял что этот форум читают и другие из Блогарии и поетому я поблагадарю и по болгарски Благодаря Не знаех как да сметна модул 97 от голямо число, но вече зная. Много благодаря за помощта Антон ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 12:04 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Anton_bg, чуток улучшил Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 12:14 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Спасибо Денис, Очень нравится твой алгоритм. Так вычисление модуля 97 проходит только в 2 шага. Cool :) Антон ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 12:23 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Anton_bgЯ понял что этот форум читают и другие из Блогарии и поетому я поблагадарю и по болгарски некоторые умельцы этот форум даже на английский переводят 12657258 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 12:51 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Симонов Денис некоторые умельцы этот форум даже на английский переводят 12657258 [offtop] мне тут вообще как-то перевели йероглиф, не то китайский, не то японский ;) [/offtop] ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 13:02 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Anton_bgОчень нравится твой алгоритм. Так вычисление модуля 97 проходит только в 2 шага. Чаще за 3 шага для полных 35 разрядов. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 12:36 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Здраствуйте все, Сюда я предлагаю вам двух procedure для проверки IBAN Они сделани благодаря вашей помощи. Может они кому то будут полезны Я сделал тест процедур с IBAN Греция, Испания, Болгария Код: sql 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.
Антон ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 16:13 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Маленкая ошибка Anton_bgcreate or alter procedure Check_IBAN ( IBAN varchar(34)) returns ( RESULT T_BOOLEAN) Я използовал T_BOOLEAN - ето у меня домейн CREATE DOMAIN T_BOOLEAN AS SMALLINT DEFAULT 0 NOT NULL CHECK (VALUE IN (0, 1)); Если хотите можно и так: create or alter procedure Check_IBAN ( IBAN varchar(34)) returns ( RESULT smallint) Антон ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 16:24 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Anton_bg, проверку вхождения цифр и символах в нужных позициях можно с помощью регулярных выражений сделать (см. SIMILAR TO) P.S. Пользуйся тэгом src ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 17:08 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Симонов Денис, Симонов ДенисПользуйся тэгом src А как пользоват? В тэг src я не вижу sql или psql. Я думал что етот тэг сделан для Oracle или для MS SQL или для других языков Подскажи какой тэг пользоват когда хочу ставить psql? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 17:54 |
|
Как sql но проверит IBAN
|
|||
---|---|---|---|
#18+
Anton_bgПодскажи какой тэг пользоват когда хочу ставить psql?Просто тэг src. Движок форума сам определяет что делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 17:58 |
|
|
start [/forum/topic.php?fid=40&fpage=72&tid=1562680]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 133ms |
0 / 0 |