powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Буква Ё
9 сообщений из 9, страница 1 из 1
Буква Ё
    #35551534
BlackFoxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли на уровне самого фокса сделать так чтобы буквы Е и Ё в данных
обрабатывались
как одна буква Е ?
Поменять в таблицах буквы нельзя. Во-первых, таблицы на MSSQL сервере, во
вторых хранить надо Ё, а обрабатывать и искать как Е.
Просто ломает вставлять везде strtran(), а таких мест под сотню будет.
Может есть какое-нибудь готовое красивое решение ?
Всех благ.
Михаил.



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Буква Ё
    #35551552
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме strtran() есть еще CHRTRAN()

BlackFoxx
Поменять в таблицах буквы нельзя. Во-первых, таблицы на MSSQL сервере, во
вторых хранить надо Ё, а обрабатывать и искать как Е.

Как вариант, если надо хранить как написано, то продублировать это поле в таблице, повесить триггер, который это поле будет обновлять, хранить там с "Е" и это поле использовать для поиска.
...
Рейтинг: 0 / 0
Буква Ё
    #35551581
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если используется оператор LIKE в запросах к MS-SQL, то там можно еще так написать:
Код: plaintext
select ... where MyField LIKE "Корабл[её]в%"
...
Рейтинг: 0 / 0
Буква Ё
    #35551607
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlackFoxx
Можно ли на уровне самого фокса сделать так чтобы буквы Е и Ё в данных
обрабатывались
как одна буква Е ?
Поменять в таблицах буквы нельзя. Во-первых, таблицы на MSSQL сервере, во
вторых хранить надо Ё, а обрабатывать и искать как Е.
Просто ломает вставлять везде strtran(), а таких мест под сотню будет.
Может есть какое-нибудь готовое красивое решение ?

Установить при индексировании Collation = RUSSIAN.
На сервере тоже есть соответствующий collation.
...
Рейтинг: 0 / 0
Буква Ё
    #35551650
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov.Установить при индексировании Collation = RUSSIAN.
На сервере тоже есть соответствующий collation.

Пример можно увидеть, который подтвердит это высказывание?

Фокс точно не заставить приравнять 'E' к 'Ё'
Код: plaintext
1.
set collate to 'russian'
? 'е' = 'ё' && = .F.

На стороне MS-SQL у меня тоже не получилось.
...
Рейтинг: 0 / 0
Буква Ё
    #35551676
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме предложенных программных решений, существует еще решение на уровне структуры данных.

Т.е. в таблице создается дополнительное поле "для поиска" в которое записывается содержимое основного поля, но уже преобразованное для удобства поиска. Например, все буквы в верхнем регистре и все буквы Ё заменены на Е.

Соответственно, поиск выполняется не по основному полю, а по этому "поисковому" полю.
...
Рейтинг: 0 / 0
Буква Ё
    #35551699
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T Sergey Sizov.Установить при индексировании Collation = RUSSIAN.
На сервере тоже есть соответствующий collation.

Пример можно увидеть, который подтвердит это высказывание?

Фокс точно не заставить приравнять 'E' к 'Ё'
Код: plaintext
1.
set collate to 'russian'
? 'е' = 'ё' && = .F.

На стороне MS-SQL у меня тоже не получилось.
1. Как я вижу, совершенно проигнорированы слова "при индексировании".
2. У соответствующей колонки в таблице поставить что-то вроде Cyrillic_General_CI_AI.
...
Рейтинг: 0 / 0
Буква Ё
    #35551762
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не думаю, что Collate поможет.

Пример для FoxPro

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE CURSOR test (ascii_cod I, char_simbol C( 1 ))
For m.lnI =  1  to  255 
	Insert into test values (m.lnI, Chr(m.lnI))
endfor

Index on char_simbol tag idx_machin
=seek("e")
?recno()
=seek("ё")
?recno()

Set Collate To "RUSSIAN"
Index on char_simbol tag idx_rus
=seek("e")
?recno()
=seek("ё")
?recno()

Как видим, Collate различает буквы "е" и "ё". Что логично, поскольку это разные буквы алфавита.

Смысл Collation в другом. Он выстраивает символы не по их ASCII-кодам, а в соответствии с алфавитным порядком.

При этом "одинаковыми" (не различимыми) становяться большие и маленькие буквы, поскольку это одна и та же буква алфавита, но записанная по другому. Разные буквы алфавита так разными и остаются.

Для таблиц MS SQL не проверял, но не думаю, что в этом отношении там сделано что-то другое.
...
Рейтинг: 0 / 0
Буква Ё
    #35551882
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov.1. Как я вижу, совершенно проигнорированы слова "при индексировании".
С твоей стороны тоже не видно кода подтверждающего твои предположения.

В данном случае не вижу разницы в сравнении по "=" и поиске по индексу. Разница только в использовании Collation = RUSSIAN, индекс эту настройку запоминает в момент создания, а "=" использует текущую. Если в обоих случаях Collation = RUSSIAN, то никакой разницы в способе сравнения нет, что ВладимирМ подтвердил примером.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Буква Ё
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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