powered by simpleCommunicator - 21.11.28     © 2024 Programmizd 02
Map
Форумы / Вопросы по IT / замена букв на цифры в MS SQL, Поиск: Искать сообщения, созданные автором: vad72  
21 сообщений из 21, страница 1 из 1
Вопросы по IT / замена букв на цифры в MS SQL
    #2199963
vad72
Скрыть профиль Поместить в игнор-лист
Участник
Есть текстовое поле, в нем английские буквы и цифры, например 62Z4953FR45834A.
К в SQL запросе заменить буквы на цифры?
Что-то не могу сообразить.
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2200374
vad72
Скрыть профиль Поместить в игнор-лист
Участник
сделал тупо в лоб, так как красивого решения не нашел
Код: SQL
1.
2.
3.
4.
5.
case
  when  SUBSTRING(a.idtu,3,1)='Z'
  then left(('1' + RIGHT(a.idtu,len(a.idtu)-3)),LEN('1' + RIGHT(a.idtu,len(a.idtu)-3))-1)+ cast(ASCII(right(a.idtu,1)) AS CHAR(2))
  else a.idtu
end idtu
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2207064
vad72
Скрыть профиль Поместить в игнор-лист
Участник
Cat2  05.06.2020, 20:16
vad72  05.06.2020, 11:35
Есть текстовое поле, в нем английские буквы и цифры, например 62Z4953FR45834A.
К в SQL запросе заменить буквы на цифры?
Что-то не могу сообразить.
А по какому правилу должна производится замена?
у меня типа поля bigint, но как оказалось, у некоторых компаниях специалисты слабые, не могут вытянуть из БД уникальный код, они могут только другой код уникальный предоставить, но он содержит буквы. Хорошо, что в моем случае, по факту, буквы только в определенных местах (хотя там могут быть и цифры). Поэтому, чтобы на ходу получить уникальный код я заменил буквы на ascii(@символ).
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2207069
vad72
Скрыть профиль Поместить в игнор-лист
Участник
SandalTree  09.06.2020, 05:27
vad72  05.06.2020, 11:35
Есть текстовое поле, в нем английские буквы и цифры, например 62Z4953FR45834A.
К в SQL запросе заменить буквы на цифры?
Что-то не могу сообразить.
SQL 2017
Код: SQL
1.
PRINT TRANSLATE ( '62Z4953FR45834A','ZFRA','0123');
у нас server 2007 , нет такой функции. Но в моем случае, нужно было бы вместо буквы вставлять две цифры, чтобы не было пересечений.
Но решение очень элегантное!
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2207106
vad72
Скрыть профиль Поместить в игнор-лист
Участник
WildMage  09.06.2020, 08:27
vad72  09.06.2020, 07:50
SandalTree  09.06.2020, 05:27
...
у нас server 2007 , нет такой функции. Но в моем случае, нужно было бы вместо буквы вставлять две цифры, чтобы не было пересечений.
Но решение очень элегантное!
Что за версия сиквела? Такой не бывает
да, действительно, вроде бы пишет 2008R2
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2208195
vad72
Скрыть профиль Поместить в игнор-лист
Участник
WildMage  09.06.2020, 15:26
SandalTree  09.06.2020, 15:25
WildMage  09.06.2020, 08:27
...
гуглу забанили?

Уже 4 года этой функции как с 2017 и на Ажуре.
https://docs.microsoft.com/en-us/sql/t-sql/functions/translate-transact-sql?view=sql-server-ver15
Да при чем тут Гугл. Он сказал, что версия секвела 2007. Такой нет!
а просто 7 есть? Папка называется MSSql7 с дистрибутивом.
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2209931
vad72
Скрыть профиль Поместить в игнор-лист
Участник
SandalTree  10.06.2020, 02:16
Цитата 
А по какому правилу должна производится замена?
да по любому принципу. В базу данных импортируются таблицы от клиентов (текстовые файлы CSV) через утилиту SQLCMD, импортируется в существующую таблицу, которой уже 10 лет и там миллионы записей. В этой таблице есть поле с индексом типа bigint. Но у одного из клиентов, изменилась ПО, в результате которого в CSV файле, вместо поля с цифрами, теперь поле, в котором есть и буквы. И он, сука, нихрена сделать не может, так как это, блядь накуй, SAP, у него специалистов нет, а сам он тупорылый гном.
У меня два выхода, изменить в своей таблице тип поля с bigint на varchar, но что-то мне подсказывает, что поля такого типа будут хуже индексироваться, если я не прав, то поправьте меня, плюс перезалить все данные нужно будет, хотя, возможно, есть какой-то более оперативный способ изменения типа поля.
Поэтому я решил на лету менять буквы на цифры (на ASCII код буквы), чтобы на выходе было то, что можно вставить в поле с типом bigint, и чтобы поле оставалось уникальным. Хорошо, что пока буквы в определенных местах и можно просто решить проблему. А если завтра буквы начнут появляться в любом месте, то тогда что? Придется перебирать все позиции в строке и менять всё, неважно буква или цифра, на ASCII код. :(
...
Изменено: 10.06.2020, 07:56 - vad72
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2209933
vad72
Скрыть профиль Поместить в игнор-лист
Участник
У меня тут мысль мелькнула, немного не по теме. А если текстовый параметр (поле в таблице) какой-то, который используется для поиска, сохранять в БД в виде bigint, то поиск по такому полю будет быстрее осуществляться? Если вместо фамилии я буду в БД сохранять фамилию в виде bigint (если цифр хватит), то поиск будет быстрее же?
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2210306
vad72
Скрыть профиль Поместить в игнор-лист
Участник
ну да, главное чтобы без коллизий. Я выше писал зачем, нужно "текстовое поле" засунуть в bigint.
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2211205
vad72
Скрыть профиль Поместить в игнор-лист
Участник
kDn  10.06.2020, 15:35
Итог - ежели схему можно поменять убрав нафиг бигинт, но нужно поменять и забыть.
Я могу поменять и забыть, но это поле праймере кей, по нему идет связь с другими таблицами.
Конкретно сейчас в этой табличке 239 672 048 записей. Что будет со скоростью работы sql-запросов, процедур ? Я боюсь, что скорость может снизится, а мне такое не подходит.
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2211248
vad72
Скрыть профиль Поместить в игнор-лист
Участник
eNose  10.06.2020, 15:33
Вадик, извини за вопрос.

Ты гуманитарий?
военный, не знаю куда их, но круглое носим, квадратное катаем.
...
Рейтинг: 1 / 0
Нравится: eNose
Вопросы по IT / замена букв на цифры в MS SQL
    #2212793
vad72
Скрыть профиль Поместить в игнор-лист
Участник
Бояннизд02  10.06.2020, 21:13
и за ради чего этот изврат?
давайте попросим вада72 полный идентификатор, не удивлюсь. если вдруг там окажется guid.
странно, что ещё никто не предложил варианта с дополнительным полем.
И куда мне это дополнительное поле? :)
Это поле, которое 15 лет существует - primary key таблицы, через которое, естественно, идет связь на другие таблицы в БД.
И так как на том конце дегенераты, которые не могут подготовить файл для импорта, то мне приходится на моей стороне, где собираются все данные со всех компаний идти на один из шагов:
1. Изменить все праймеры кей в существующих таблицах с bigint на varchar (с учетом, что кол-во записей несколько миллиардов в БД, это займет некоторое время). Скорость выборок упадет.
2. Но ходу при импорте данных из файла преобразовывать (хешировать) их столбец с буквами в bigint (и там не guid). Тут, как по мне, никаких проблем не должно возникнуть, сейчас так и настроил.
3. Увольнять персонал на том конце, пока не сделают поле типа bigint (но я на такое никогда не иду, все мы люди, нужно друг другу помогать, тем более, что там SAP, и они и так там всё в "рукопашную" делают, бедняги).

P.S. Кстати, они мне еще одну задачку добавили, стали отрицательные числа в текстовый файл писать в виде 1234.56- . Тоже надо подумать, как это исправить на лету.
...
Изменено: 11.06.2020, 08:25 - vad72
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2212801
vad72
Скрыть профиль Поместить в игнор-лист
Участник
kDn  10.06.2020, 18:45
Надеюсь там шота ценное и бакапы как правило уже проепаны?
Она ценная только для меня, так как я использую её для выполнения своих непосредственных обязанностей - анализа и аудита компаний семи областей Украины. На основе этих данных акционеры принимают свои управленческие решения. Я просто у них инструмент для анализа. А мне для анализа нужен массив данных.
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2212805
vad72
Скрыть профиль Поместить в игнор-лист
Участник
SandalTree  10.06.2020, 15:52
SAP разрабатывали на "экстремальные ситуации".
Если я правильно понял ситуацию, то там специалисты уволились, которые "писали/настраивали" систему, вернее их переманили в другую компанию. А те, что остались, они не могут что-то сделать, так как не хватает компетенции. Бизнес будет сносить этот САП, так как он столько денег не зарабатывает, чтобы оплачивать эту систему.
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2213442
vad72
Скрыть профиль Поместить в игнор-лист
Участник
Бояннизд02  11.06.2020, 13:52
так если обратная связь не нужна, то нахера этот огород?
Чтобы импортировать поле с буквами в поле типа bigint. Но мне повезло, что буквы большие от A-Z, у них анси код две цифры, и они в двух местах только попадаются, поэтому можно легко в бигинт и назад.

А вот если бы буквы попадались в любом месте, то пришлось бы "пробегаться" по-символьно и делать замену каждого символа через анси в трехзначную цифру.
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2213540
vad72
Скрыть профиль Поместить в игнор-лист
Участник
Акционеры из разных стран, я из Киева.
...
Изменено: 11.06.2020, 15:03 - vad72
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2213610
vad72
Скрыть профиль Поместить в игнор-лист
Участник
SandalTree  11.06.2020, 15:20
Я знал бизнес, который так обанкротился.
я не против sap, просто мы не можем себе его позволить, если всё прибыль отдавать, то даже тогда мы не закроем расходы на sap. Раньше часть компаний было американскими. у которых "мировая" лицензия на sap (точно не знаю ,как она называется) и мы (часть компаний где сап) ничего не платили, так как оплату лицензий делала американская компания в рамках всех стран на планете земля. Мы там просто терялись, что мы есть, что нет, для них это не имело значение. Потом ,когда американцы продали акции, САП остался и что с ним делать? Мы не может самостоятельно осилить оплату его.
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2213703
vad72
Скрыть профиль Поместить в игнор-лист
Участник
kDn  11.06.2020, 16:30
vad72  11.06.2020, 15:03
Акционеры из разных стран, я из Киева.
Ладно, буду предполагать, что вы не брешете. Поскольку я последние годы чутка злой на РФ и ни при каких обстоятельствах деловых отношений с этой страной иметь не хочу.

---------------
Теперь по сути вашего вопроса.
Менять нечто там в id для данных приходящих извне - бред.
Вам фактически нужно сделать чтобы id (PK) менялся самостоятельно хоть как IDENTITY, хоть через секвенс. Пофиг.
А для сопоставления нужно попросту использовать доп. поле refExternalID, где вы на всяк случай будете сохранять ID из внешней системы. Вот и все.

* Когда речь идет о модификации таблиц с мульярдами строк, то нужно понимать, что это будет крайне долго и затратно по логу. Следствие - возможно имеет смысл создать таблицу нужной структуры - слить туда данные неспешно, дальше грохнуть исходную, а целевую переименовать.
Ну, я не знаю, какой смысл еще одного поля, если можно преобразовать исходное в BIGINT, даже с возможностью выкрутить из него обратно начальное значение, если понадобится.
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2214757
vad72
Скрыть профиль Поместить в игнор-лист
Участник
SandalTree  11.06.2020, 18:15
Ему инта вполне хватит, у него 200 миллионов значений против 4 миллиардов.
Ещё на много-много лет хватит, а к тому времени он уже на пенсию уйдёт.
максимальное число там 199 999 889 612 349 , так что никак в INT
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2220685
vad72
Скрыть профиль Поместить в игнор-лист
Участник
SandalTree  12.06.2020, 14:11
Какая разница сколько там цифр, главное сколько там всего записей.
может я не верно озвучил ранее, тогда повторюсь, у меня импортируется не одна таблица, это поле не просто PK, по этому полю идет связь с другими таблицами, его нельзя тупо заменять на другой "автосчетчик".
...
Рейтинг: 0 / 0
Вопросы по IT / замена букв на цифры в MS SQL
    #2228688
vad72
Скрыть профиль Поместить в игнор-лист
Участник
SandalTree  15.06.2020, 14:10
vad72  15.06.2020, 08:06
SandalTree  12.06.2020, 14:11
...
может я не верно озвучил ранее, тогда повторюсь, у меня импортируется не одна таблица, это поле не просто PK, по этому полю идет связь с другими таблицами, его нельзя тупо заменять на другой "автосчетчик".
Вопрос в том у вас единовременная конвертация или вы собираетесь это делать регулярно или вообще работать в параллельном режиме?
файлы поступают постоянно. Я согласен, что дополнительное поле с первичным ключом с буквами было бы красиво, но если его можно на ходу туда сюда преобразовывать, то пока не буду делать.

Да и вообще, что-то я устал, если честно. Хочется чего-то нового, например, открыть какую-то маленькую кофейню и наслаждаться жизнью, работая на себя, а не заносить хвосты всем кому только можно (но это наёмный труд, всё по честному, без принуждения). [:smile]
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Вопросы по IT / замена букв на цифры в MS SQL, Поиск: Искать сообщения, созданные автором: vad72  
Пользователи онлайн (21): Анонимы (19), Yandex Bot 2 мин., Bing Bot 4 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]