sql – 复杂的字段“string – number – string”
发布时间:2021-01-18 09:37:40 所属栏目:MsSql教程 来源:网络整理
导读:基本上,我试图按名称对表进行排序.该表相对较大,但为了示例,我只发布了一列.列位于下方 Station===ANTIL WELL 1ANTIL WELL 2BASELINE CALIFORNIA WELLEPA WELL 6EPA WELL 7EPA WELL 108EPA WELL 109EPA WELL 110EPA WELL 111EPA WELL 112EPA WELL 108S 上面的
|
基本上,我试图按名称对表进行排序.该表相对较大,但为了示例,我只发布了一列.列位于下方 Station === ANTIL WELL 1 ANTIL WELL 2 BASELINE & CALIFORNIA WELL EPA WELL 6 EPA WELL 7 EPA WELL 108 EPA WELL 109 EPA WELL 110 EPA WELL 111 EPA WELL 112 EPA WELL 108S 上面的那种是我尝试这样做的: order by left(station,LEN(station) -PATINDEX('%[^0-9]%',REVERSE(station))+1),CONVERT(int,REVERSE(LEFT(REVERSE(station),PATINDEX('%[^0-9]%',REVERSE(station)) - 1)))
但是,我无法对那EPA WELL 108S进行排序.我需要它介于EPA WELL 108和EPA WELL 109之间,我尝试了许多不同的方法. EPA之后,电台列表也在继续. 解决方法该解决方案比所选答案更可靠.如果站内有超过1个号码,如“EPA WELL 5 7”,则此答案可能无法给出预期答案.这个解决方案是用’0’填充数字,所以比较将考虑所有数字8位数.DECLARE @Table1 table([station] varchar(26))
INSERT INTO @Table1
([station])
VALUES
('ANTIL WELL 2'),('ANTIL WELL 1'),('BASELINE & CALIFORNIA WELL'),('EPA WELL 7'),('EPA WELL 6'),('EPA WELL 108'),('EPA WELL 109'),('EPA WELL 110'),('EPA WELL 111'),('EPA WELL 112'),('EPA WELL 108S'),('EPA WELL 111108')
;
SELECT station
FROM @table1
ORDER BY
CASE WHEN station not like '%[0-9]%' THEN station ELSE
STUFF(station,PATINDEX('%[0-9]%',station),replicate('0',station) - len(station) + PATINDEX('%[0-9]%',reverse(station)) + 6))
END
* GoatCD的答案不会在我的测试数据中给出正确的顺序. (编辑:天瑞地安资讯网_瑞安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql varchar(max)vs varchar(fix)
- 多表关联同时更新多条不同的记录方法说明
- Powershell Invoke-Sqlcmd的错误检测并不总是有效?
- sql – 在视图中转换科学记数法(来自varchar – gt;数字)
- sql – 使用主键更改列数据类型
- sql – 如何在django中执行“最大n组”查询?
- SQL – 安全地将BIGINT向下转换为INT
- sql-server – Microsoft SQL Server的拥有架构和角色成员资
- sql-server-2008 – SQL Server 2008 – 一个表24gb,删除了
- sql-server – MS SQL Server中的自定义聚合函数?
站长推荐
热点阅读

