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

Откуда: Израиль. Хадера.
Сообщений: 198
Имеется поле WordHeb типа NVARCHAR(255)
Мне необходимо очистить его от нежелательных знаков, оставив все остальное.

Сейчас я это делаю с помощью внешней программы на C#. Выглядит это так:
        internal static string ClearNekudot(string p)
        {

            string tmpWord = "";
            char[] arrCh = p.ToCharArray();
            foreach (char ch in arrCh)
            {
                string sCh = ch.ToString();
                if (sCh != "ְ" &&
                   sCh != "ֲ" &&
                   sCh != "ֱ" &&
                   sCh != "ֳ" &&
                   sCh != "ִ" &&
                   sCh != "ֵ" &&
                   sCh != "ֶ" &&
                   sCh != "ַ" &&
                   sCh != "ָ" &&
                   sCh != "ׂ" &&
                   sCh != "ׁ" &&
                   sCh != "ֹ" &&
                   sCh != "ּ" &&
                   sCh != "ֻ")
                {
                    tmpWord = tmpWord + sCh;
                }
            }
            return tmpWord;
        }

Затем вызываю сохраненную процедуру SQL Server и передаю ей полученный параметр tmpWord

Уверен, что лучше все это сделать в самом MS SQL Server. Подскажите, пожалуйста, как.

Спасибо!
Евгений.
1 авг 11, 13:09    [11052531]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
evgenybe
Имеется поле WordHeb типа NVARCHAR(255)
Мне необходимо очистить его от нежелательных знаков, оставив все остальное.

Сейчас я это делаю с помощью внешней программы на C#. Выглядит это так:
+

        internal static string ClearNekudot(string p)
        {

            string tmpWord = "";
            char[] arrCh = p.ToCharArray();
            foreach (char ch in arrCh)
            {
                string sCh = ch.ToString();
                if (sCh != "ְ" &&
                   sCh != "ֲ" &&
                   sCh != "ֱ" &&
                   sCh != "ֳ" &&
                   sCh != "ִ" &&
                   sCh != "ֵ" &&
                   sCh != "ֶ" &&
                   sCh != "ַ" &&
                   sCh != "ָ" &&
                   sCh != "ׂ" &&
                   sCh != "ׁ" &&
                   sCh != "ֹ" &&
                   sCh != "ּ" &&
                   sCh != "ֻ")
                {
                    tmpWord = tmpWord + sCh;
                }
            }
            return tmpWord;
        }

Затем вызываю сохраненную процедуру SQL Server и передаю ей полученный параметр tmpWord

Уверен, что лучше все это сделать в самом MS SQL Server. Подскажите, пожалуйста, как.

Спасибо!
Евгений.


REPLACE
1 авг 11, 13:29    [11052688]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
evgenybe, и вы, наверное, точно знаете какие символы желательные, а какие нет. Но никому не скажете. Верно?
1 авг 11, 13:29    [11052692]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
kDnZP
evgenybe, и вы, наверное, точно знаете какие символы желательные, а какие нет. Но никому не скажете. Верно?
вон они у него, в листинге
1 авг 11, 13:32    [11052714]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Гадя Петрович
kDnZP
evgenybe, и вы, наверное, точно знаете какие символы желательные, а какие нет. Но никому не скажете. Верно?
вон они у него, в листинге

Листинг вижу, но есть ли уверенность, что например 'æ' - желательный символ? У меня такой уверенности нет))).
1 авг 11, 13:41    [11052799]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
evgenybe
Member

Откуда: Израиль. Хадера.
Сообщений: 198
kDnZP
Гадя Петрович
пропущено...
вон они у него, в листинге

Листинг вижу, но есть ли уверенность, что например 'æ' - желательный символ? У меня такой уверенности нет))).


В иврите есть только согласные буквы. А все гласные заменяются так называемыми огласовками - это значки в виде точек или палочек над или под буквой (они-то и перечислены у меня в листинге). Что-то наподобие знака ударения (например. в слове погулׁять) над русскими словами букваре для учеников первого класса русской школы.

Ивритские буквари используют эти знаки, а вот газеты, книги, интернет статьи и т.п. - нет. Потому мне и надо иметь слово и в таком и в таком варианте, чтобы найти слово в базе данных.

Следовательно, меня не волнует наличие или отсутствие буквы 'æ' в поле. Его изначально там нет и не может быть. А вот те символы (огласовки), которые у меня перечислены в листинге - могут быть. Их то мне и надо убрать, оставив все остальное.
1 авг 11, 14:00    [11052940]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
evgenybe
Member

Откуда: Израиль. Хадера.
Сообщений: 198
Ken@t
evgenybe
Имеется поле WordHeb типа NVARCHAR(255)
Мне необходимо очистить его от нежелательных знаков, оставив все остальное.

Сейчас я это делаю с помощью внешней программы на C#. Выглядит это так:
+
+

        internal static string ClearNekudot(string p)
        {

            string tmpWord = "";
            char[] arrCh = p.ToCharArray();
            foreach (char ch in arrCh)
            {
                string sCh = ch.ToString();
                if (sCh != "ְ" &&
                   sCh != "ֲ" &&
                   sCh != "ֱ" &&
                   sCh != "ֳ" &&
                   sCh != "ִ" &&
                   sCh != "ֵ" &&
                   sCh != "ֶ" &&
                   sCh != "ַ" &&
                   sCh != "ָ" &&
                   sCh != "ׂ" &&
                   sCh != "ׁ" &&
                   sCh != "ֹ" &&
                   sCh != "ּ" &&
                   sCh != "ֻ")
                {
                    tmpWord = tmpWord + sCh;
                }
            }
            return tmpWord;
        }

Затем вызываю сохраненную процедуру SQL Server и передаю ей полученный параметр tmpWord

Уверен, что лучше все это сделать в самом MS SQL Server. Подскажите, пожалуйста, как.

Спасибо!
Евгений.


REPLACE


Но ведь там в слове не один из этих знаков, а несколько. Нужен "множественный" replace в одном и том же поле. А как?
1 авг 11, 14:06    [11052986]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
Glory
Member

Откуда:
Сообщений: 104751
evgenybe

Но ведь там в слове не один из этих знаков, а несколько. Нужен "множественный" replace в одном и том же поле. А как?

Выполнить replace столько раз, сколько нужно ?
1 авг 11, 14:14    [11053055]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Glory
evgenybe
Но ведь там в слове не один из этих знаков, а несколько. Нужен "множественный" replace в одном и том же поле. А как?

Выполнить replace столько раз, сколько нужно ?

Полностью согласен. Раз набор символов для замены ограничен, то просто не морочить голову и написать нечто вида:
REPLACE(REPLACE(REPLACE(...),...),...)
1 авг 11, 14:21    [11053108]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
evgenybe
Member

Откуда: Израиль. Хадера.
Сообщений: 198
kDnZP
Glory
пропущено...

Выполнить replace столько раз, сколько нужно ?

Полностью согласен. Раз набор символов для замены ограничен, то просто не морочить голову и написать нечто вида:
REPLACE(REPLACE(REPLACE(...),...),...)


Ага. Понятно.
Спасибо.
1 авг 11, 21:52    [11055714]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
ImrDuke
Member

Откуда:
Сообщений: 12
Обращусь со своей проблемкой...
 select ss, REPLACE(ss,'-','X') as snils from lpu 
на такой запрос выводится:
141-197-811 53 | X
4 авг 11, 10:18    [11068883]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
Glory
Member

Откуда:
Сообщений: 104751
Вы наверное заблуждаетесь насчет значения в вашем поле

select REPLACE('141-197-811 53','-','X')
4 авг 11, 10:21    [11068900]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
ImrDuke
Member

Откуда:
Сообщений: 12
Glory
Вы наверное заблуждаетесь насчет значения в вашем поле

select REPLACE('141-197-811 53','-','X')


попробовал и так написать выводит только Х. А у меня в запросе ss - строка в которой данные
4 авг 11, 10:58    [11069152]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 7498
ImrDuke,

версия?
4 авг 11, 11:07    [11069228]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
Glory
Member

Откуда:
Сообщений: 104751
ImrDuke
Glory
Вы наверное заблуждаетесь насчет значения в вашем поле

select REPLACE('141-197-811 53','-','X')


попробовал и так написать выводит только Х. А у меня в запросе ss - строка в которой данные

Выводит где ? В SMS все нормально, если вы там запускаете именно этот код
4 авг 11, 11:10    [11069241]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
ImrDuke
Member

Откуда:
Сообщений: 12
у меня на самом деле "DBISAM Version 4" просто темка похожая, сюда и написал
4 авг 11, 11:18    [11069320]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
ImrDuke
Member

Откуда:
Сообщений: 12
нашел свою ошибку. сделал так
 select ss, REPLACE(' ' WITH '' in REPLACE('-' WITH '' IN lpu.ss)) as snils from lpu 
4 авг 11, 11:25    [11069378]     Ответить | Цитировать Сообщить модератору
 Re: Как очистить поле от нежелательных знаков  [new]
Glory
Member

Откуда:
Сообщений: 104751
ImrDuke
у меня на самом деле "DBISAM Version 4" просто темка похожая, сюда и написал

А чего не в Foxpro или Сache ?
4 авг 11, 11:26    [11069383]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить