小编Dev*_*ard的帖子

如何确定性地将 varchar iPv4 地址转换为数字

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 并相乘之前字符串操作的视觉效果: IP 字符串操作

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

sql-server

4
推荐指数
1
解决办法
4472
查看次数

标签 统计

sql-server ×1