Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Помогите создать запрос с REPLACE  [new]
nuklon
Member

Откуда:
Сообщений: 27
Этот вопрос в продолжение темы https://www.sql.ru/forum/1027453/regulyarka-v-mysql-ili-zamena-simvolov-na-bukvy , там речь шла о поиске по лат. символам. Для решения предложили создать параллельно поле с замененными символами.
Вопрос:
Можно ли с помощью ф-ии REPLACE заменить символы из одного массива на соответствующие символы другого (или, незнаю, как-то сопоставить эти символы в ms sql). Как бы замена Oracle'ковской ф-ии TRANSLATE.
Если можно такое замутить, то как создать такой запрос? Взять строку из поля, например, sNAme и вставить измененную строку в поле sNameSearch.
у меня SQL SERVER 2008 R2
тип полей nvarchar(4000)
кодировка cp1251

Записей очень много ~10Тб, но это в начале, потом каждый день по десятки-сотни тысяч строк

Помогите разобраться
7 июн 13, 13:31    [14405985]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Если втупую, то N вложенных реплейсов где N- количество обрабатываемых символов. Не могу сказать сходу как оно скажется на быстродействии.
7 июн 13, 13:39    [14406048]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
nuklon,

1. Сделать у себя постоянную таблицу с числами, если её ещё нет.
2. В подзапросе (derived table) разобрать строки таблицы на символы с помощью этой таблицы чисел.
3. Собрать в запросе строки из джойна подзапроса из п.2 с таблицей замен с помощью FOR XML PATH(''), TYPE.

Где-то на форуме я это писал, но что-то найти не могу.
7 июн 13, 13:41    [14406073]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
Cammomile
Если втупую, то N вложенных реплейсов где N- количество обрабатываемых символов. Не могу сказать сходу как оно скажется на быстродействии.
Вроде говорится о каком-то "другом массиве с соответствующими символами".
Так просто вложенные REPLACEы не применишь.
7 июн 13, 13:43    [14406083]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Ну мне показалось, что автор несколько спутанно выразился.
Ему же надо. насколько я понял, приводить некую строку, содержащую разные символы, к латинице. Это как раз запросто реплейсами.
7 июн 13, 13:45    [14406095]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
DECLARE @str varchar(10) 
SET @str = 'об вp' /*тут p - аглийская Пи*/


SELECT UPPER(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@str,'о','0'),'б', 'B'),'р','R'),'в','V') ,' ','') )
7 июн 13, 13:46    [14406115]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
Гость333
Member

Откуда:
Сообщений: 3683
iap
Cammomile
Если втупую, то N вложенных реплейсов где N- количество обрабатываемых символов. Не могу сказать сходу как оно скажется на быстродействии.
Вроде говорится о каком-то "другом массиве с соответствующими символами".
Так просто вложенные REPLACEы не применишь.

Судя по ссылке, данной в начале темы, "массивы с соответствующими элементами" заранее известны. Соответственно, и вложенные replace'ы можно написать.
7 июн 13, 13:47    [14406128]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
Cammomile
Ну мне показалось, что автор несколько спутанно выразился.
Ему же надо. насколько я понял, приводить некую строку, содержащую разные символы, к латинице. Это как раз запросто реплейсами.
Это баян!
Есть ли у кого готовая функция перевода (транслит) с руского на английский
7 июн 13, 13:48    [14406132]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Тут транслит не нужен, насколько я пони. Т.е. надо не Я - менять на Ya, а отслеживать хитрожопых, которые ВИЗУАЛЬНО ОДИНАКОВЫЕ буквы меняют на английские или цифры
7 июн 13, 13:51    [14406156]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
ps
Код с реплейсами на 2 монитора убил наповал ...
7 июн 13, 13:51    [14406163]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
Гость333
Member

Откуда:
Сообщений: 3683
+
Cammomile
насколько я пони

вы уже не впервые признаётесь, что вы — пони 14343682
7 июн 13, 13:59    [14406216]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
Shakill
Member

Откуда: мск
Сообщений: 1882
nuklon,

10230455
7 июн 13, 14:15    [14406324]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
nuklon
Member

Откуда:
Сообщений: 27
Cammomile
Тут транслит не нужен, насколько я пони. Т.е. надо не Я - менять на Ya, а отслеживать хитрожопых, которые ВИЗУАЛЬНО ОДИНАКОВЫЕ буквы меняют на английские или цифры
именно так. главная задача отслеживать заказы негодяев, которые т.о., хотят, чтобы торги выигрывали "нужные люди".
А вот код, которые вы привели, его можно запускать раз в сутки и тока новые (т.е, за последние сутки)? если да, то как?

з.ы. с sql server'ом дружу не очень
7 июн 13, 14:23    [14406370]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
nuklon
Member

Откуда:
Сообщений: 27
iap
nuklon,

1. Сделать у себя постоянную таблицу с числами, если её ещё нет.
2. В подзапросе (derived table) разобрать строки таблицы на символы с помощью этой таблицы чисел.
3. Собрать в запросе строки из джойна подзапроса из п.2 с таблицей замен с помощью FOR XML PATH(''), TYPE.

Где-то на форуме я это писал, но что-то найти не могу.
гыгы, не. мне нужно готовое решение. Слишком туго с sql server'ом
7 июн 13, 14:26    [14406397]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
nuklon
iap
nuklon,

1. Сделать у себя постоянную таблицу с числами, если её ещё нет.
2. В подзапросе (derived table) разобрать строки таблицы на символы с помощью этой таблицы чисел.
3. Собрать в запросе строки из джойна подзапроса из п.2 с таблицей замен с помощью FOR XML PATH(''), TYPE.

Где-то на форуме я это писал, но что-то найти не могу.
гыгы, не. мне нужно готовое решение.
Для этого есть специальный форум - Работа
7 июн 13, 14:30    [14406417]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Фига, какой нынче стёдент наглый пошёл!
7 июн 13, 14:30    [14406420]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
nuklon
Member

Откуда:
Сообщений: 27
iap
nuklon
пропущено...
гыгы, не. мне нужно готовое решение.
Для этого есть специальный форум - Работа
а этот форум для чего, чтобы печатать ссылки на другой форум? :)
7 июн 13, 14:32    [14406429]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
Cammomile
Фига, какой нынче стёдент наглый пошёл!
Я тоже удивился.
Нет чтобы поговорить!
7 июн 13, 14:33    [14406435]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
nuklon
iap
пропущено...
Для этого есть специальный форум - Работа
а этот форум для чего, чтобы печатать ссылки на другой форум? :)

Ну явно не для того, чтобы давать вам готовые решения... почитайте правила.. никто ничем вам не обязан!
7 июн 13, 14:34    [14406442]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
nuklon
Member

Откуда:
Сообщений: 27
Cammomile
Фига, какой нынче стёдент наглый пошёл!
так почти же написал, вот твое предложение оно верное? Если да то как ее продолжить и можно ли запускать его раз в сутки?
7 июн 13, 14:35    [14406453]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
nuklon
Cammomile
Фига, какой нынче стёдент наглый пошёл!
так почти же написал, вот твое предложение оно верное? Если да то как ее продолжить и можно ли запускать его раз в сутки?

Как продолжить хорошо описано здесь:
http://msdn.microsoft.com/ru-ru/library/ms186862(v=sql.100).aspx

А чтобы запускать раз в сутки надо настроить задание агента SQL Server
7 июн 13, 14:36    [14406463]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
nuklon
Member

Откуда:
Сообщений: 27
блин, товарищи, вы время тратите чтобы сказать, что ничем мне не поможете, за это время можно было понакатать что-нибудь
7 июн 13, 14:37    [14406471]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
nuklon
iap
пропущено...
Для этого есть специальный форум - Работа
а этот форум для чего, чтобы печатать ссылки на другой форум? :)
Для общего обсуждения появившихся проблем программистами, включая автора темы.
А не одностороннего выполнения заказа такого вот "работодателя".
Я даже намекнул на возможный успешный поиск "готового решения" на этом форуме.
7 июн 13, 14:37    [14406472]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
nuklon
блин, товарищи, вы время тратите чтобы сказать, что ничем мне не поможете, за это время можно было понакатать что-нибудь

а вы за это время могли бы вполне изучить использование интересующей вас функции, разве не так?
7 июн 13, 14:37    [14406484]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос с REPLACE  [new]
nuklon
Member

Откуда:
Сообщений: 27
Сергей Викт.
Как продолжить хорошо описано здесь:
http://msdn.microsoft.com/ru-ru/library/ms186862(v=sql.100).aspx

А чтобы запускать раз в сутки надо настроить задание агента SQL Server
воот, можно же и без оплаты советы давать )
7 июн 13, 14:38    [14406495]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить