Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
15 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 52

Разбить строку на 2 подстроки

26.03.2013, 14:45. Показов 3267. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть поле ИИН/КПП, и необходимо его разбить на 2 поля ИНН и КПП, но сложность в том, что в базе в поле ИНН/КПП данные занесены не однотипно, т.е пример:
2322020608 / 236501001
2635014137/263501001
7735002840 /773501001
230808251151 / -
234302280370\234301001
5902858780\590201001

Как это можно сделать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.03.2013, 14:45
Ответы с готовыми решениями:

Разбить строку на все "связные" подстроки. Получившиеся подстроки записать в вектор
Нужно разбить минимальную строку на "связные" подстроки Например: строка Mas: "qwe" нужны подстроки:...

Разбить строку на подстроки в WITH
Возникли проблемы в СРМ с созданием отчёта (SSRS) при передачи multivalue параметров в хранимку. Если писать этот запрос в редакторе...

Разбить строку на 2 подстроки
Дана строка символов, состоящая из произвольного текста, слова разделены пробелами. Разбить исходную строку на две подстроки, причем первая...

5
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
26.03.2013, 16:11
Посмотрите такую процедуру (что-то вроде примитивного лексического разбора с помощью конечного автомата)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Sub ИНН_КПП(ByVal ИНН_КПП As String, ByRef ИНН As String, ByRef КПП As String)
    Dim ФОРМИРОВАНИЕ As Integer
    Dim СИМВОЛ As Integer
        ФОРМИРОВАНИЕ = 1
        ИНН = ""
        КПП = ""
        For СИМВОЛ = 1 To Len(ИНН_КПП)
            Select Case Mid(ИНН_КПП, СИМВОЛ, 1)
            Case 0 To 9
                Select Case ФОРМИРОВАНИЕ
                Case 1
                    ИНН = ИНН & Mid(ИНН_КПП, СИМВОЛ, 1)
                Case 2
                    КПП = КПП & Mid(ИНН_КПП, СИМВОЛ, 1)
                End Select
            Case Else
                ФОРМИРОВАНИЕ = 2
            End Select
        Next СИМВОЛ
End Sub
0
3357 / 1776 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
26.03.2013, 16:37
SQL
1
2
3
4
SELECT [ИНН/КПП], 
IIf((InStr([ИНН/КПП],"\")-1)<0,Left([ИНН/КПП],InStr([ИНН/КПП],"/")-1),Left([ИНН/КПП],InStr([ИНН/КПП],"\")-1)) AS ИНН, 
IIf((InStr([ИНН/КПП],"\")-1)<0,LTrim((right([ИНН/КПП],len([ИНН/КПП])-InStr([ИНН/КПП],"/")))),LTrim((right([ИНН/КПП],len([ИНН/КПП])-InStr([ИНН/КПП],"\"))))) AS КПП 
FROM Таблица;

P.S. сам себя "ржу-нимАгу" за предложенную мною кашу
Но работает, как ни странно


Кстати, а еще можно так:
SQL
1
2
3
4
SELECT [ИНН/КПП], 
LEFT(REPLACE([ИНН/КПП],"\","/"),InStr(Replace([ИНН/КПП],"\","/"),"/")-1) as ИНН, 
LTrim(RIGHT(Replace([ИНН/КПП],"\","/"),Len(Replace([ИНН/КПП],"\","/"))-(InStr(Replace([ИНН/КПП],"\","/"),"/")))) as КПП
FROM Таблица;
1
15 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 52
26.03.2013, 16:45  [ТС]
Спасибо, все оказалось намного проще, сделал так:
With rs1
.edit
!ИНН = Replace(!ИНН, "\", "/")
.Update
arr = Split(!ИНН, "/")
arr(0) = Trim(arr(0))
arr(1) = Trim(arr(1))
End With

Пока вроде работает))
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
27.03.2013, 02:48
mqn, что такое arr? где определяется?
а проще:
T-SQL
1
2
3
select left(ИНН, instr(1,replace(ИНН,"\","/"),"/")-1) as ИНН, 
mid(ИНН, instr(1,replace(ИНН,"\","/"),"/")+1,len(ИНН)) AS КПП
from таблица
1
15 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 52
27.03.2013, 09:15  [ТС]
Dim arr() As String

Это массив
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.03.2013, 09:15
Помогаю со студенческими работами здесь

Разбить строку на подстроки
есть к примеру строка &quot;фыва:апр:ролд&quot; необходимо вывести на экран все слова до : и после второго : если в строке только одно : -...

Разбить строку на подстроки
Например есть файл C:\Home\НТД\DH_15_12_13_16_00_18_00.xls Как можно присвоить переменную следующим частям имени файла: 1. var1:=...

Разбить строку на подстроки
Исходная строка содержит фамилию, имя, отчество, которые могут быть выделены по отдельности.

Разбить строку на подстроки
Нужно разбить строку на подстроки , вот пример : ababa a,b,a,b,a,ab,ba,ab,ba,aba,bab,aba,abab,baba,ababa

Разбить строку на подстроки
Сабж. Как объединить , все просто и ясно. А вот как разбить ? Пример текста 5555555,6666666 - части обязательно разделены запятой. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru