PARSENAME()在 SQL Server 中不使用(非确定性)函数将 varchar iPv4 地址转换为数字以创建持久计算列的各种方法有哪些?
我使用了基于第 n 个字符实例提取字符串部分的字符串操作技术来创建以下内容:
select
((256*256*256)*convert(bigint, ltrim(rtrim(substring(replace('255.255.255.255','.',replicate(' ',8)),1, 9)))))
+
((256*256)*convert(bigint,ltrim(rtrim(substring(replace('255.255.255.255','.',replicate(' ',8)),10, 9)))))
+
((256)*convert(bigint,ltrim(rtrim(substring(replace('255.255.255.255','.',replicate(' ',8)),19, 9)))))
+
(convert(bigint,ltrim(rtrim(substring(replace('255.255.255.255','.',replicate(' ',8)),28, 9)))))
Run Code Online (Sandbox Code Playgroud)
这是在将每个段转换为 BIGINT 并相乘之前字符串操作的视觉效果:

...这可以创建一个可以持久化的确定性计算列。还有哪些其他更有效的技术?
sql-server ×1