Có chức năng nào trong SQL Server thay đổi danh từ từ số ít sang số nhiều không?Chức năng Sql để làm cho danh từ số nhiều
Trả lời
Chức năng đó không tồn tại trong SQL Server.
Không, nhưng sẽ rất dễ dàng để tạo bảng cho điều này nếu bạn có một nhóm từ hạn chế để kiểm tra.
Ví dụ:
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')
Ngoài ra, bạn có thể làm bàn chỉ là trường hợp ngoại lệ, lời nói tức là không thể thành số nhiều với việc bổ sung đơn giản của một s
- sau đó bạn có thể làm một kiểm tra EXISTS
vào đó bảng, nếu nó không có thì thêm một s
và nếu nó là sau đó tra cứu số nhiều.
Bản thân SQL không có bất kỳ thứ gì như thế này - nhưng bạn có thể thử sử dụng .NET PluralizationService được giới thiệu trong .NET 4 - cùng một chức năng mà Khung thực thể sử dụng để đa dạng hóa/đánh số tên bảng thành tên đối tượng.
Bạn sẽ phải viết một hội đồng SQL-CLR để khai thác các dịch vụ số nhiều, nhưng nó chắc chắn có vẻ giống như một điều có thể làm được!
Hàm không tồn tại trong SQL Server, như @aF đã đề cập. Một nơi tôi biết nếu nó tồn tại trong Entity Framework 4+. Đối tượng số nhiều có thể thực sự là instantiated and used.
SQL có khả năng chạy mã CLR - thông qua SQL CLR. Vấn đề chính là SQL CLR được giới hạn trong .NET Framework 3.5. Vì vậy, bạn sẽ cần viết một số mã .net 4 hoạt động trên các bảng của bạn. Cách khác, bạn có thể sử dụng một sản phẩm như Reflector và reverse engineer một phiên bản tương thích 3.5 và chạy nó bên trong 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)
Returns
noun
------ ------------------------------
cat cats
mouse mice
goose geese
person persons
man men
datum data
Đáng tiếc là nó chỉ dựa trên quan sát rằng thuật ngữ TOP 1
mở rộng cho danh từ là hình thức số nhiều. Tôi nghi ngờ rằng đây là tài liệu bất cứ nơi nào.
Bạn có muốn sử dụng mục đích này cho mục đích hiển thị không?
Giống như "Tìm kiếm của bạn trở lại 1 kết quả"/"Tìm kiếm của bạn trở lại 4 kết quả"?
Nếu có, tôi sẽ không làm như vậy.
Tìm kiếm hoặc viết một hàm thực hiện điều này một cách chính xác cho tất cả các trường hợp đặc biệt là không thể, và lưu trữ từng văn bản cần thiết một lần ở dạng số ít và một lần ở dạng số nhiều không tốt hơn nhiều.
Tại nơi làm việc, tôi đang đối phó với nhiều ngôn ngữ và rất nhiều câu tạo động như thế này rất nhiều, và tôi thấy rằng hoàn toàn tránh sự phân biệt của dạng số ít/số nhiều ở tất cả các sự là giải pháp đơn giản nhất để quản lý:
"số kết quả cho tìm kiếm này: 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
tôi biết đây là một chủ đề cũ, nhưng nghĩ tôi sẽ gửi anyways. Dựa trên những gì Martin bắt đầu, tôi mở rộng nó và cho đến nay nó đang làm một công việc OK. Tôi sẽ không nói nó là hoàn hảo. Điều này được sử dụng để đa dạng tên bảng vì vậy nó được kiểm soát rất nhiều
- 1. Đối số chức năng nhiều loại
- 2. Làm thế nào để chức năng merge chồng chéo số-dao động từ một danh sách
- 3. Query: truyền tham số cho chức năng ẩn danh
- 4. Đối số cho JavaScript Chức năng ẩn danh
- 5. Một đối số, nhiều chức năng
- 6. Nhiều thông số tùy chọn chức năng
- 7. Làm cách nào để áp dụng chức năng ẩn danh từ danh sách trong sơ đồ?
- 8. jQuery, cùng chức năng cho nhiều id
- 9. PHP: Vượt qua chức năng ẩn danh làm đối số
- 10. Danh sách nhóm cho chức năng hclust
- 11. Chức năng SQL tổng hợp để lấy chỉ số đầu tiên từ mỗi nhóm
- 12. Dọn dẹp danh sách chức năng trong gói R với nhiều chức năng
- 13. Node.js - Chờ cho nhiều chức năng để hoàn thành
- 14. Javascript: thông số "Infinite" cho chức năng?
- 15. SQL COUNTIF chức năng
- 16. Clojure: trả lại véc tơ từ chức năng ẩn danh
- 17. phát lại danh sách các chức năng và thông số
- 18. đối số chức năng
- 19. Làm thế nào để bạn tạo chức năng ẩn danh scala với nhiều tham số ngầm định
- 20. Tham số cho chức năng tìm kiếm
- 21. Làm thế nào để chuỗi nhiều chức năng?
- 22. Go: Chức năng biến thể và quá nhiều đối số?
- 23. Có bao nhiêu tham số chức năng quá nhiều?
- 24. CoffeeScript, chuyển nhiều thông số bao gồm cả chức năng ẩn danh
- 25. Thủ tục PL/Sql vs chức năng?
- 26. Chức năng nào trong số hai chức năng này có nhiều "pythonic" hơn?
- 27. Chức năng trừu tượng và danh sách đối số biến
- 28. Làm thế nào để vượt qua nhiều đầu ra từ chức năng vào mảng di động
- 29. TẠO CHỨC NĂNG lỗi "Chức năng này không có DETERMINISTIC, NO SQL hoặc READS SQL DATA"
- 30. làm thế nào để vượt qua danh sách như tham số trong chức năng
Điều đó sẽ khó (bằng tiếng Anh, dù sao) do sự bất thường của số nhiều. Mèo-> Mèo, Chuột-> Chuột, Ngỗng-> Ngỗng, Người-> Người ... –
Trong ngôn ngữ nào? :) Chắc chắn, tiêu chuẩn không tồn tại. –
Có một hàm SQL hiểu ngữ pháp cho một ngôn ngữ nhất định không ??? No :) – MatBailie