¿Hay alguna función en SQL Server que cambie el nombre del singular al plural?Función Sql para hacer sustantivo plural
Respuesta
Esa función no existe en SQL Server.
No, pero sería bastante fácil hacer una tabla para esto si tienes un conjunto limitado de palabras para verificar.
Ejemplo:
CREATE TABLE dbo.Plurals
(
id int IDENTITY,
singular varchar(100),
plural varchar(100)
)
INSERT INTO dbo.Plurals
VALUES
('cat', 'cats'),
('goose', 'geese'),
('man', 'men'),
('question', 'questions')
Como alternativa, puede tomar la mesa sólo haber excepciones, es decir, palabras que no pueden ser plural, con la simple adición de un s
- entonces usted podría hacer una comprobación EXISTS
en ese tabla, si no está allí, agregue un s
y si es entonces busque el plural.
El SQL en sí mismo no tiene nada como esto, pero podría intentar usar .NET PluralizationService introducido en .NET 4 - la misma funcionalidad que Entity Framework usa para pluralizar/singularizar nombres de tabla a nombres de objeto.
Tendría que escribir un ensamblado SQL-CLR para aprovechar los servicios de pluralización, ¡pero definitivamente parece algo factible!
La función no existe en SQL Server, como se menciona @aF. El único lugar que sé si existe es en Entity Framework 4+. El objeto de pluralización en realidad puede ser instantiated and used.
SQL tiene la capacidad de ejecutar código CLR - a través de SQL CLR. El principal problema es que SQL CLR está limitado a .NET Framework 3.5. Entonces, necesitaría escribir algún código .net 4 que opere en sus tablas. Alternativamente, puede usar un producto como Reflector e invertir la versión 3.5 de una versión compatible y ejecutarlo dentro de SQL Server.
CREATE FUNCTION dbo.Pluralize
(
@noun nvarchar(50)
)
RETURNS nvarchar(50)
AS
BEGIN
DECLARE @QueryString nvarchar(4000)
SET @QueryString = N'FORMSOF(INFLECTIONAL,"' + @noun + N'")'
RETURN
(SELECT TOP 1 display_term
FROM sys.dm_fts_parser(@QueryString,1033,0,0))
END
GO
SELECT noun,
dbo.Pluralize(noun)
FROM (VALUES('cat'),
('mouse'),
('goose'),
('person'),
('man'),
('datum')) nouns(noun)
devoluciones
noun
------ ------------------------------
cat cats
mouse mice
goose geese
person persons
man men
datum data
Por desgracia sólo se basa en la observación de que el término TOP 1
expansión para el sustantivo es la forma plural. Dudo que esto esté documentado en ningún lado.
¿Desea utilizar esto para fines de visualización?
Algo así como "Su búsqueda 1 resultado"/"Su búsqueda 4 resultados"?
En caso afirmativo, no lo haría así.
Encontrar o escribir una función que hace esto correctamente para todos los casos especiales (y mucho menos en varios idiomas) es casi imposible, y almacenar cada texto necesario una vez en singular y una vez en plural no es mucho mejor.
En el trabajo, estoy tratando con múltiples idiomas y un montón de frases generadas dinámicamente como esto mucho, y me pareció que evitar por completo la distinción de las formas singular/plural en absoluto es la solución más fácil de manejar:
"Número de resultados para esta búsqueda: 1"
DECLARE @PluralVersion nvarchar(128) = ''
DECLARE @TableName nvarchar(128) = 'MyTableName'
DECLARE @NounVersions TABLE(Term nvarchar(128) NOT NULL)
DECLARE @QueryString nvarchar(4000) SET @QueryString = N'FORMSOF(INFLECTIONAL,"' + @TableName + N'")'
INSERT INTO @NounVersions
SELECT TOP 10 display_term FROM sys.dm_fts_parser(@QueryString,1033,0,0)
SELECT TOP 1 @PluralVersion = Term FROM @NounVersions WHERE Term Not Like '%''%' AND RIGHT(Term,1) = 's'
SET @PluralVersion = UPPER(LEFT(@PluralVersion,1))+LOWER(SUBSTRING(@PluralVersion,2,LEN(@PluralVersion)))
SELECT @PluralVersion
sé que esto es un hilo viejo, pero pensé que iba a publicar de todos modos. Basado en lo que Martin comenzó, lo expandí y hasta ahora está haciendo un buen trabajo. No diría que es perfecto. Esto se utiliza para la pluralización de los nombres de las tablas por lo que es muy controlado
- 1. Extrayendo sustantivo + sustantivo o (adj | noun) + sustantivo de Texto
- 2. identificadores gramaticalmente correctas de doble sustantivo, versiones plurales
- 3. Singular o plural para enumeraciones?
- 4. plural Django para las plantillas
- 5. Biblioteca para determinar el artículo indefinido de un sustantivo?
- 6. identificador singular o plural para un diccionario?
- 7. Django fix Admin plural
- 8. ¿Detecta un pronombre y su sustantivo?
- 9. sql función recursiva - para encontrar gerentes
- 10. Enum convención de nomenclatura - Plural
- 11. ¿El plural inteligente siempre inteligente?
- 12. bigote JS y singular/plural
- 13. Dividir y conquistar - Array plural
- 14. Función para hacer Pascal Case? (C#)
- 15. Sql función agregada para obtener una lista
- 16. Función SQL personalizada para el dialecto NHibernate
- 17. ¿Deberíamos evitar los nombres en plural para las variables?
- 18. ¿Hay una lista de referencias plural/singular para Rails?
- 19. Usando la forma plural para la localización rusa
- 20. encontrar sustantivo y un verbo en Stanford analizador
- 21. función mysql para devolver una tabla
- 22. Ruby on Rails Plural Nombre del modelo
- 23. Elasticsearch no devuelve coincidencias de singular/plural
- 24. Localización ASP.NET con singular y plural
- 25. Nombres de tabla de base de datos: Plural o Singular
- 26. singular o plural en modelos de controladores?
- 27. Use Access SQL para hacer una clasificación agrupada
- 28. Función SQL-soundex
- 29. Traducir el formulario plural del modelo
- 30. forma plural de la palabra "mutex"
Eso sería difícil (en inglés, de todos modos) debido a la irregularidad de las pluralidades. Cat-> Cats, Mouse-> Mice, Goose-> Geese, Person-> People ... –
¿En qué idioma? :) Claro, el estándar no existe. –
¿Hay una función SQL que entienda la gramática para un idioma determinado? No :) – MatBailie