Склонение фамилий в SQL Server
SqlMorpher.dll позволяет склонять фамилии, должности, названия городов и другие реквизиты
в SQL Server и SQL Azure.
Вы можете создавать вычисляемые колонки со значением нужного падежа,
автоматически вставлять в поля падежные формы
или просто вызывать функции склонения со стороны клиента базы данных.
Совместимость
SqlMorpher.dll работает на следующих платформах:
- SQL Server 2005
- SQL Server 2008
- SQL Server 2008 R2
- SQL Server 2012
- SQL Server 2014
- SQL Azure v12
Функция Падеж
CREATE FUNCTION dbo.Падеж (
@s nvarchar (max),
@падеж nvarchar (6),
@признаки nvarchar (7))
RETURNS nvarchar (max)
@s – строка для склонения,
@падеж – требуемая падежная форма:
- 'И' – именительный (без изменения)
- 'Р' – родительный (кого? чего?)
- 'Д' – дательный (кому? чему?)
- 'В' – винительный (кого? что?)
- 'Т' – творительный (кем? чем?)
- 'П' – предложный (о ком? о чем?) без предлога
- 'По' – предложный (о ком? о чем?) с предлогом О/ОБ/ОБО
- 'Где' – предложный с предлогом В/НА – отвечает на вопрос где?
- 'Куда' – винительный с предлогом В/НА – отвечает на вопрос куда?
- 'Откуда' – с родительный предлогом ИЗ/С – отвечает на вопрос откуда?
Рекомендации по выбору варианта предложного падежа
@признаки – набор признаков, разделенных пробелом или запятой:
- 'ФИО' – фамилия, имя или отчество
- 'Гео' – географическое название
- 'Нар' – нарицательное
- 'Муж' – мужской род
- 'Жен' – женский род
@признаки нужны, когда в словосочетании (@s) недостаточно информации для однозначного склонения, например:
select dbo.Падеж ('Любовь', 'Д', 'ФИО')
select dbo.Падеж ('Любовь', 'Д', 'нар')
select dbo.Падеж ('Полищук', 'Д', 'муж')
select dbo.Падеж ('Полищук', 'Д', 'жен')
В остальных случаях признаки указывать необязательно:
select dbo.Падеж ('Любовь Полищук', 'Д', null)
select dbo.Падеж ('Дмитрий Полищук', 'Д', null)
Функция ПолучитьФамилиюПротивоположногоПола
CREATE FUNCTION dbo.ПолучитьФамилиюПротивоположногоПола (
@фамилия nvarchar (max))
RETURNS nvarchar (max)
Данная функция строит фамилию женского рода для данной фамилии мужского рода и наоборот. Например:
select dbo.ПолучитьФамилиюПротивоположногоПола ('Пушкин')
select dbo.ПолучитьФамилиюПротивоположногоПола ('Толстой')
select dbo.ПолучитьФамилиюПротивоположногоПола ('Лермонтов')
Для фамилий, не изменяющихся по родам, фамилия остается без изменений:
select dbo.ПолучитьФамилиюПротивоположногоПола ('Лещенко')
select dbo.ПолучитьФамилиюПротивоположногоПола ('Заворотнюк')
select dbo.ПолучитьФамилиюПротивоположногоПола ('Перельман')
Функция определения рода
SELECT dbo.ОпределитьРод ('Евгений')
SELECT dbo.ОпределитьРод ('Евгения')
SELECT dbo.ОпределитьРод ('окно')
SELECT dbo.ОпределитьРод ('часы')
SELECT dbo.ОпределитьРод ('Petrov')
Функция Пропись: формирование суммы прописью
CREATE FUNCTION dbo.Пропись (@число int, @единицаИзмерения nvarchar (max))
RETURNS TABLE (ПрописьЧисла nvarchar (max), ЕдиницаИзмеренияВНужномПадеже nvarchar (max))
Инструкция по установке
Модуль склонения интегрируется в SQL Server при помощи технологии под названием
CLR Integration,
появившейся в SQL Server начиная с версии 2005.
Комплект поставки:
- Install.sql — скрипт установки библиотеки, включающий в себя двоичный код библиотеки;
- Uninstall.sql — скрипт удаления библиотеки, рекомендуется запускать перед переходом на новую версию;
- СуммаПрописью.sql — пример вывода суммы прописью с помощью функции Morpher.dll Пропись;
- Install-Azure.sql — скрипт установки модуля в SQL Azure.
Для установки выполните следующие шаги:
- Распакуйте поставочный архив во временную папку, доступную службе SQL Server.
- Запустите среду управления SQL Server, например, бесплатную среду
Microsoft SQL Server 2008 Management Studio Express
(2005).
- Откройте файл Install.sql в редакторе и укажите в нем путь к SqlMorpher.dll:
CREATE ASSEMBLY Morpher
FROM 'путь\SqlMorpher.dll'
WITH PERMISSION_SET = SAFE;
go
- Выполните Install.sql.
- Если при этом выдается сообщение об ошибке:
Неправильный синтаксис около "EXTERNAL". Возможно, следует установить более высокий уровень совместимости для текущей базы данных, чтобы включить эту функцию. См. справку по параметру SET COMPATIBILITY_LEVEL инструкции ALTER DATABASE.
То выполните команду:
sp_dbcmptlevel 'название_БД', 90
И запустите Install.sql еще раз.
- Если вы получили сообщение
Configuration option 'clr enabled' changed from 0 to 1. Run the RECONFIGURE statement to install
,
то перезапустите службу SQL Server и выполните Install.sql заново.
- Ваш SQL Server к склонению готов! Проверяем:
select dbo.Падеж ('Петров Пётр','Р')
- Временную папку можно удалить.
Установка в SQL Azure
Просто выполните файл Install-Azure.sql, входящий в комплект поставки.
В остальном работа с "Морфером" в SQL Azure ничем не отличается от работы в SQL Server.
Получение и установка обновлений
Чтобы получить новую версию библиотеки, напишите нам с электронного адреса,
на который зарегистрирована лицензия, либо укажите номер договора, название юрлица или контактного лица.
Процедура установки обновления:
- Выполните файл Uninstall.sql из старого дистрибутива.
- Следуйте инструкции по установке выше.
История изменений
Дата |
Версия |
|
22.04.2015 |
2.6.4 |
Исправлена ошибка, возникавшая в MSSQL 2005 при регистрации сборки
(
CREATE ASSEMBLY failed because method 'get_DecoratedLemma' on type 'Slepov.Russian.Morpher.MultiPartDecoratedWord' in safe assembly 'SqlMorpher' is storing to a static field. Storing to a static field is not allowed in safe assemblies.
).
В MSSQL 2008 ошибка не возникала.
|
15.04.2015 |
2.6.3 |
Пополнение словаря.
|
15.03.2015 |
2.6.2 |
Исправлено склонение сокращения "И.о." (исполняющий обязанности), когда первая буква заглавная, например "И.о. директора".
|
1.10.2014 |
2.6.1 |
- Существенное пополнение словаря (более 7000 новых слов).
- Сокращения зам. и зав. теперь не склоняются.
- Функции теперь возвращают NULL, а не ошибку, если любой из обязательных параметров равен NULL.
|
17.08.2014 |
2.6.0 |
Исправлена ошибка в прописи чисел вида ... x1y abc, где x=1..9, y=1..4, abc - любые 3 цифры, а ... - любая последовательность цифр, в т.ч. нулевой длины.
Пример числа: 311 000. Ошибка проявлялась только в родительном падеже (трёхсот одиннадцати ТЫСЯЧИ вместо трёхсот одиннадцати ТЫСЯЧ).
|
21.07.2014 |
2.5.0 |
Устранена проблема, возникавшая при регистрации сборки в SQL Server 2005
(CREATE ASSEMBLY failed because type 'Slepov.Russian.Morpher.Склонятель' in safe assembly 'SqlMorpher' has a static field 'CS$<>9__CachedAnonymousMethodDelegate12'. Attributes of static fields in safe assemblies must be marked readonly in Visual C#, ReadOnly in Visual Basic, or initonly in Visual C++ and intermediate language. ).
Проблема решена добавлением атрибута CompilerGeneratedAttribute к классу Склонятель .
В SQL Server 2008 сборка предыдущей версии работала нормально.
Работоспособность сборки проверена в SQL Server 2005 SP4 и SQL Server 2008 R2.
|
17.07.2014 |
2.4.1 |
Устранена проблема, возникавшая при регистрации сборки в SQL Server 2005
(CREATE ASSEMBLY failed because method 'Проанализировать' on type 'Slepov.Russian.Morpher.СклонятельНарицательных' in safe assembly 'SqlMorpher' is storing to a static field. Storing to a static field is not allowed in safe assemblies. ).
Проблема решена добавлением атрибута CompilerGeneratedAttribute к классу СклонятельНарицательных .
В SQL Server 2008 сборка предыдущей версии работала нормально.
|
12.07.2014 |
2.4.0 |
Добавлена поддержка SQL Server 2005.
Ранее поддерживались только SQL Server 2008 и выше.
Сборка теперь использует .NET 2.0 (раньше был .NET 3.5).
|
07.05.2014 |
2.3.1 |
Пополнение словаря.
|
18.02.2014 |
2.3.0 |
Улучшено распознавание ФИО для составных имен. Теперь входное словосочетание признается ФИО, если
хотя бы один из разделенных дефисом компонентов известен как имя. В результате стали правильно склоняться
такие имена как ГЕЙ-ЛЮССАК Жозеф-Луи, Кени Шарль-Андре, Гильермо Гомес-Пенья и другие.
|
23.09.2013 |
2.2.5 |
Исправлена ошибка в прописи числа 0,2 в винительном падеже. Эта ошибка касалась только чисел 0,2, 0,002, 0,000002 и т.д. и проявлялась только в винительном падеже ("двух десятых" вместо "две десятых"). |
22.08.2013 |
2.2.4 |
Добавлена функция ОпределитьРод. |
25.07.2013 |
2.2.3 |
Учтены последние изменения в Morpher.dll для .NET |
|
2.2.2 |
Исправлена ошибка 'CREATE ASSEMBLY failed because method is storing to a static field.' |
30.09.2012 |
2.2.1 |
Учет аббревиатуры "и.о." (исполняющий обязанности), небольшое пополнение словаря. |
|
2.2.0 |
Добавлена функция Пропись. |
|
2.1.0 |
Добавлена функция ПолучитьФамилиюПротивоположногоПола. |
|
2.0.2 |
Исправлен баг с Полищук (жен). |