【发布时间】:2018-05-02 16:31:38
【问题描述】:
我正在尝试将给定的 IPv4 地址拆分为四个数字。
在 SQL Server 中,这个查询很适合我:
select CAST (PARSENAME('10.20.30.40',4) AS INT)
结果:10
select CAST (PARSENAME('10.20.30.40',3) AS INT)
结果:20
等等。
我需要 Oracle SQL 中的等效语法,但找不到。有什么想法吗?
【问题讨论】:
-
this 答案中可能有一些有价值的东西。虽然它是为 SQL Server 编写的,但它避免了
ParseName并提供了VarChar(n)和BigInt之间的转换。 -
为什么坚持使用Vintage IP?
-
所有答案的共同说明:您使用
PARSENAME的提议仅适用于四个(或更少)元素,即 IPv4。如果需要,您可以轻松修改所有给出的答案以支持 IPv6。 -
致那些不赞成这个问题的人:如果你能解释你反对什么,这会有所帮助。这个问题似乎很清楚,OP 展示了他对解决它的了解(另一种 SQL 方言的解决方案)并要求 Oracle 等价物。这个问题有什么遗漏、错误或不清楚的地方?为什么投反对票?如果您希望他们对他人有所帮助,请解释您的反对意见。
-
@MartinSchröder - OP 并不坚持使用 Vintage IP(我不这么认为)。 OP 需要处理现有数据。您是否在问为什么可能存储在十年前的数据不使用更新类型的地址?
标签: sql sql-server oracle