|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2006-05-26, 10:55 PM | #1 |
榮譽會員
|
軟體 - 取得拼音字頭的存儲過程
-- =============================================
-- Create scalar function (NWGetPYFirst) -- ============================================= IF EXISTS (SELECT * FROM sysobjects WHERE name = N'NWGetPYFirst') DROP FUNCTION NWGetPYFirst GO CREATE FUNCTION NWGetPYFirst (@str varchar(500) = '') RETURNS varchar(500) AS BEGIN Declare @strlen int, @return varchar(500), @ii int, @c char(1), @chn nchar(1) --//初始化變量 Declare @pytable table( chn char(2) COLLATE Chinese_PRC_CS_AS NOT NULL, py char(1) COLLATE Chinese_PRC_CS_AS NULL, PRIMARY KEY (chn) ) insert into @pytable values('丫', 'A') insert into @pytable values('八', 'B') insert into @pytable values('嚓', 'C') insert into @pytable values('咑', 'D') insert into @pytable values('婀', 'E') insert into @pytable values('發', 'F') insert into @pytable values('旮', 'G') insert into @pytable values('鉿', 'H') insert into @pytable values('丌', 'I') --insert into @pytable values('丌', 'J') insert into @pytable values('卡', 'K') insert into @pytable values('垃', 'L') insert into @pytable values('嘸', 'M') insert into @pytable values('拏', 'N') insert into @pytable values('噢', 'O') insert into @pytable values('妑', 'P') insert into @pytable values('七', 'Q') insert into @pytable values('呥', 'R') insert into @pytable values('仨', 'S') insert into @pytable values('他', 'T') insert into @pytable values('洼', 'U') --insert into @pytable values('洼', 'V') --insert into @pytable values('洼', 'W') insert into @pytable values('夕', 'X') insert into @pytable values('丫', 'Y') insert into @pytable values('匝', 'Z') select @strlen = len(@str), @return = '', @ii = 0 --//循環整個字符串,用拼音的首字母替換漢字 while @ii < @strlen begin select @ii = @ii + 1, @chn = substring(@str, @ii, 1) if @chn > 'z' --//檢索輸入的字符串中有中文字符 SELECT @c = max(py) FROM @pytable where chn <= @chn else set @c=@chn set @return=@return+@c end return @return END GO -- ============================================= -- Example to execute function -- ============================================= SELECT dbo.NWGetPYFirst('夢想國度'), dbo.NWGetPYFirst('noctwolf分享源碼'), dbo.NWGetPYFirst('') GO 補充一個Oracle的。 直接用SQLPLUS運行附件中的 install.pdc,這個腳本將做以下幾件事。 1、在當前用戶中建立 D_PINYIN_INDEX 表。 如果你覺得不爽,那就改腳本。 2、往D_PINYIN_INDEX裡面填數據。 3、建立觸發器 T_D_PINYIN_INDEX_ALL 禁止修改 D_PINYIN_INDEX 裡面的數據。 4、建立包 UTIL_PINYIN 使用樣例如下: 代碼 (雙擊代碼複製到粘貼板)SQL> select util_pinyin.getspell('中文1是a嗎?') from dual; UTIL_PINYIN.GETSPELL('中文1是A嗎?') -------------------------------------------------------------------------------- ZW1SAM? |
送花文章: 3,
|