SQL 提取字符串的一部分
我在文本字段(字符串)中存储了一个邮政编码,并且只想在 select 语句中选择该值的最后 3 位数字。这可能吗?是否有一种标准方法可以实现 SQL 跨数据库的互换?我将在 Oracle 的生产中使用它,但我在 Interbase 上进行测试(是的,是的,我知道,两个完全不同的数据库,但这就是我正在做的)
感谢您提供的任何帮助
I have a zipcode stored in a text field (string) and would like to select only the last 3 digits of the value in my select statement. is this possible? Is there a standard way of doing this so that the SQL is interchangeable accross databases? I will be using it in production on Oracle, but i test on Interbase (yes, yes, i know, two totally diff DBs, but thats what i am doing)
thanks for any help you can offer
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
假设邮政编码都具有相同的长度,您可以使用
substr
。如果它们的长度不同,您必须使用
strlen
函数执行类似的操作。Interbase 没有内置子字符串函数,但它在
lib_udf.dll
中有一个名为SUBSTR
的UDF
(用户定义函数),工作原理如下:您可以这样声明 UDF:
Oracle 确实有一个内置的 substr 函数,您可以这样使用:
--jeroen
Assuming the zipcodes all have the same length, you can use
substr
.If they don't have the same length, you have to do similar things with the
strlen
function.Interbase does not have a built-in substring function, but it does have a
UDF
(user defined function) calledSUBSTR
inlib_udf.dll
that works like this:You declare the UDF like this:
Oracle does have a built-in substr function that you use like this:
--jeroen
这取决于您存储邮政编码的方式。如果您仅使用 5 位数字
那么这应该适用于 Oracle,也可能适用于 Interbase。
如果您存储 Zip + 4 并且需要最后 3 位数字,有些是 5 位数字,有些是 9 位数字,则必须执行以下操作。
在这两个数据库中可能效果更好的一种选择是
This depends on how your storing the zip code. If you are using 5 digits only
then this should work for Oracle and may work for Interbase.
IF you store Zip + 4 and you want the last 3 digits and some are 5 digits and some are 9 digits you would have to do the following.
and one option that may work better in both databases is