sql-server - SQL Server 根据字母扩展行
问题描述
我在 SQL Server 中有一个如下所示的表:
我想知道是否有一种方法可以通过 T-SQL 将此表扩展为以下?
我搜索了几乎所有关于扩展日期或数值的讨论。我想知道是否有办法按字母扩展?谢谢!
我试过在 SQL 中比较字母,像这样,T-SQL 会识别字母的顺序:
DECLARE @code varchar(3) = 'G0C'
DECLARE @start varchar(3) = 'G0W'
DECLARE @end varchar(3) = 'G0Z'
SELECT
CASE
WHEN @code >= @Start AND @code <= @end
THEN 'True'
ELSE 'False'
END
但是,如果我想为字母增加 1,则不允许varchar
+1。我考虑过转换为 ASCII,然后再将其转换回来,但这会显着影响性能(展开前的表大约有 3000 行)?
解决方案
您可以使用内联计数表
SELECT
CODE = LEFT(t.[FROM], 2) + v.chr,
t.ZONE
FROM YourTable t
JOIN (VALUES
('A'),('B'),('C'),('D'),('E'),('F'),('G'),('H'),('I'),('J'),('K'),('L'),('M'),('N'),('O'),('P'),('Q'),('R'),('S'),('T'),('U'),('V'),('W'),('X'),('Y'),('Z')
) v(chr) ON v.chr BETWEEN SUBSTRING(t.[FROM], 3, 1) AND SUBSTRING(t.TO, 3, 1)
这只处理最后一个字符。对整个字符串执行此操作更复杂
推荐阅读
- android - react-native - keyboardDidShow 和 keyboardDidHide 在 Android 中屏幕旋转时触发
- java - 如何在 POST 后修复空白页以在 Java EE 中将数据插入数据库
- android - 为 Button 添加 onClickListener 时出现编译错误
- javascript - 使用javascript或python正则表达式我想确定数字是否为1-99如何制作?
- spring-boot - 用于构建 spring-cloud-dataflow-server 映像的 Dockerfile
- php - 如何配置wordpress ajax超时限制
- python - 具有服务器端证书问题的 Python Paho-mqtt 客户端
- python - 从文件中删除特定模式
- docker - Docker 运行时总是出错,standard_init_linux.go:207: exec 用户进程在 Windows 上导致“没有这样的文件或目录”
- apache-spark - Spark 如何将计算转移到 HBase 中的数据?