表rbd_dtl的RBP_VALUE字段存储着字符串“ALL”和一些字母,现在要将该字段拼成分段的字符串,形如: A-F,H,J-K,N-O,Q-S,U-V,X-Z
源数据如下:
具体规则是:
如果RBP_VALUE=“ALL”,则舍去该值。
如果RBP_VALUE前后都是连续的字母,则取第一个字母和最后一个字母作为一段,中间用横杠,比如“A-F”。
如果RBP_VALUE出现间隔,比如K和N之间缺少L和M,则K之前作为一段,N之后作为一段,两段之间用逗号分隔,形如:“J-K,N-O”。
如果RBP_VALUE前后都不连续,比如H前面缺少G,后面缺少I,则当前值单独作为一段。
集算器写法:
A1:执行SQL。
A2:将A1的RGB_VALUE按照字母表对齐,部分结果如下:
A3:对A2进行分组,RBD_VALUE等于null时分一组,不等于null时再分一组。@o表示归并式分组,只对前后数据进行比较。结果如下:
A4:选出非空的组。
A5:根据组内成员个数拼凑字符串。~.m(-1)表示取当前组的最后一条记录。计算结果如下:
A6:用逗号合并集合成员,即:A-F,H,J-K,N-O,Q-S,U-V,X-Z
事实上只需要取出RBD_VALUE就可以了,代码也可以合并为一句:
myDB1.query("select RBD_VALUE from rbd_dtl").(RBD_VALUE).align(26.(char(64+~))).group@o(!~).select(~(1)).(~(1)+if(~.len()>1,"-"+~.m(-1))).string@d() 。
相关推荐
sql按拼音首字母排序,sql按拼音排序
BigDump 的工作原理是:将巨大的 SQL 文件分段多次导入,每完成一段就重新启动一次导入会话,因此不会造成中断、失败。 理论上讲,BigDump 可以针对任何一个 MySQL 数据库工作。 BigDump 数据库导入工具用法: ...
sql 汉字转拼音首字母 代码 function --汉字转拼音首字母sql Create FUNCTION dbo.fnpbGetPYFirstLetter ( @str NVARCHAR(4000) )
常用的sql语句,希望可以对大家有所提高
SQL计算某只股票5日移动平均价和5日交易量加权移动平均价(附SQL语句)
SQL取得汉字拼音首字母SQL取得汉字拼音首字母SQL取得汉字拼音首字母SQL取得汉字拼音首字母SQL取得汉字拼音首字母
if exists(select * from sys.objects where name='GetUpper') drop function dbo.GetUpper go CREATE function GetUpper(@words varchar(16)) returns varchar(8000) as begin DECLARE @s VARCHAR(MAX)= @...
把中文转换为中文拼音首字母,数据库文档,
SQLServer 拼音首字母,只是一个方法 SQLServer 拼音首字母,只是一个方法
sql 函数 汉字 首字母sql 函数 汉字 首字母sql 函数 汉字 首字母sql 函数 汉字 首字母sql 函数 汉字 首字母sql 函数 汉字 首字母
基于PB SQL的船体分段材料核算及查询系统.pdf
SQLSERVER计算年龄(岁月天),可以精确到岁,月,几月几天。
只用一句SQL计算名次,允许并列,搜集整理下来,供大家珍藏
SQL 2000 的字母日期序列号自动递增方式
针对不确定的查询参数,简化SQL语句的拼写代码。目前支持Oracl及MySql数据库
JavaScript、SQLSERVER拼音首字母 JavaScript、SQLSERVER拼音首字母
--去除字段中符号,只保留数字和字母sql-- create FUNCTION DBO.REMOVE_SYMBLE(@S VARCHAR(100)) RETURNS VARCHAR(100) AS BEGIN DECLARE @SQL VARCHAR(100) SET @SQL=''
Oracle9i的简化SQL语法 Oracle9i的简化SQL语法
计算执行SQL语句的执行时长(SQL代码)。。。。。。。
输入汉字字符参数,返回汉字拼音的首字母!