来谈谈SQL数据库中滥用临时表、排序的解决方案优化(举例:汉字转拼音函数)
2011-01-12 14:18
295 查看
游标、临时表、触发器、COLLATE等等...
无可厚非、这些都是好东西
我为什么今天要花时间来写这些东西呢?
是因为我发现慢慢的很多人用久了这些东西之后会形成一种习惯,不管解决什么问题动不动都会把它们搬出来
由此我看到了很多漂亮的代码在性能效率面前却显得不那么优秀
好了废话不多说开始进入正题吧
今天的案例
场景:
需要通过用户输入的姓名关键字来搜索用户。用户输入关键字'x'来搜索用户(数据来源于表[Name字段中]或内存[List<UserInfo>]中)
要求:
得到的结果排序应为:
x
xia
xiao
yx
即:
包含x字母的结果均应显示出来
首字母匹配的结果应该排在前面(如x开头)
在条件2相同的前提下更短的结果应排在前面(如x排在xia前面)
各位大侠能否给出一套c#与sql server(2008)的解决方案?
补充:
如果能一起解决中文问题最好,如搜索'x'
得到的结果排序应为:
x
xiani
夏荣
肖小笑
杨星
即将汉字的拼音首字母纳入在内,不知sqlserver是否支持这一特性的搜索?
感谢[学习的脚步]这位网友提出来的问题
其实要解决这个问题不难,无非就是汉字转拼音首字母
---------------------------------------------------------------------------------------------
先给出解决方案一
代码
估计运算开销 0
实际执行:1万行数据调用此函数0~1秒
----------------------------------------------------------------------------------------------------------
好了,这些方案我都写完了、简单的总结一下
其实不管你写了多少年的SQL 有的时候不要养成一种先入为主、自作聪明的观念
一个优秀的解决方案也许只需最简单的代码就能达到理想的效果。
所以谨以此篇文章来希望让更多的人看到,其实我们生活当中经常所遇到的问题往往都是我们无限的把它复杂化,严重化了
退一步海阔天空、换个角度想想吧
----------------------------------------------------------------------------------------------------------
今天的文章就到这里,以实用为主 你学到了吗?
无可厚非、这些都是好东西
我为什么今天要花时间来写这些东西呢?
是因为我发现慢慢的很多人用久了这些东西之后会形成一种习惯,不管解决什么问题动不动都会把它们搬出来
由此我看到了很多漂亮的代码在性能效率面前却显得不那么优秀
好了废话不多说开始进入正题吧
今天的案例
场景:
需要通过用户输入的姓名关键字来搜索用户。用户输入关键字'x'来搜索用户(数据来源于表[Name字段中]或内存[List<UserInfo>]中)
要求:
得到的结果排序应为:
x
xia
xiao
yx
即:
包含x字母的结果均应显示出来
首字母匹配的结果应该排在前面(如x开头)
在条件2相同的前提下更短的结果应排在前面(如x排在xia前面)
各位大侠能否给出一套c#与sql server(2008)的解决方案?
补充:
如果能一起解决中文问题最好,如搜索'x'
得到的结果排序应为:
x
xiani
夏荣
肖小笑
杨星
即将汉字的拼音首字母纳入在内,不知sqlserver是否支持这一特性的搜索?
感谢[学习的脚步]这位网友提出来的问题
其实要解决这个问题不难,无非就是汉字转拼音首字母
---------------------------------------------------------------------------------------------
先给出解决方案一
代码
create function [dbo].[fn_getpy5] (@str nvarchar(4000)) returns nvarchar(4000) as begin declare @str_len int,@result nvarchar(4000) ,@crs nvarchar(1) set @str_len=len(@str) set @result= ' ' while @str_len> 0 begin set @crs=substring(@str,@str_len,1) select @str_len=@str_len-1,@result= case when @crs>='帀' then 'Z' when @crs>='丫' then 'Y' when @crs>='夕' then 'X' when @crs>='屲' then 'W' when @crs>='他' then 'T' when @crs>='仨' then 'S' when @crs>='呥' then 'R' when @crs>='七' then 'Q' when @crs>='妑' then 'P' when @crs>='噢' then 'O' when @crs>='拏' then 'N' when @crs>='嘸' then 'M' when @crs>='垃' then 'L' when @crs>='咔' then 'K' when @crs>='丌' then 'J' when @crs>='铪' then 'H' when @crs>='旮' then 'G' when @crs>='发' then 'F' when @crs>='妸' then 'E' when @crs>='咑' then 'D' when @crs>='嚓' then 'C' when @crs>='八' then 'B' when @crs>='吖' then 'A' else @crs end+@result end return(@result) end
估计运算开销 0
实际执行:1万行数据调用此函数0~1秒
----------------------------------------------------------------------------------------------------------
好了,这些方案我都写完了、简单的总结一下
其实不管你写了多少年的SQL 有的时候不要养成一种先入为主、自作聪明的观念
一个优秀的解决方案也许只需最简单的代码就能达到理想的效果。
所以谨以此篇文章来希望让更多的人看到,其实我们生活当中经常所遇到的问题往往都是我们无限的把它复杂化,严重化了
退一步海阔天空、换个角度想想吧
----------------------------------------------------------------------------------------------------------
今天的文章就到这里,以实用为主 你学到了吗?
相关文章推荐
- 谈谈SQL数据库中滥用临时表、排序的解决方案优化(举例:汉字转拼音函数)
- PHP将汉字转化成拼音的函数(用于取首字母索引或按字母排序中文)
- 汉字转全拼音函数优化方案(SQLServer),值得你看看
- 中国省份按照拼音排序出现的问题以及临时解决方案
- 汉字转全拼音函数优化方案(SQLServer),值得你看看
- 汉字转全拼音函数优化方案(SQLServer),值得你看看
- [MSSQL]汉字转全拼音函数优化方案(SQLServer),值得你看看
- PHP将汉字转化成拼音的函数(用于取首字母索引或按字母排序中文)
- 汉字转全拼音函数优化方案(SQLServer),值得你看看
- [MSSQL]汉字转全拼音函数优化方案(SQLServer),值得你看看
- 汉字转拼音函数
- ASP汉字转拼音函数的方法
- Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音
- Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音
- 汉字转拼音缩写的函数以及其他函数
- MySQL中文汉字转拼音的自定义函数和使用实例(首字的首字母)
- PHP 中文汉字转换成拼音函数
- mysql 按照 汉字的第一个拼音排序
- Oracle 函数获取汉字拼音的首字母