我有一个zipcode存储在文本字段(字符串),并希望只选择我的select语句中的值的最后3位数字。这可能吗?有没有这样做的标准方式,以便SQL可以跨数据库互换?我会在生产环节上的Oracle使用它,但我对Interbase的测试(是的,是的,我知道,两个完全差异的DB,但多数民众赞成我在做什么)SQL提取部分字符串
感谢您的帮助,您可以提供
我有一个zipcode存储在文本字段(字符串),并希望只选择我的select语句中的值的最后3位数字。这可能吗?有没有这样做的标准方式,以便SQL可以跨数据库互换?我会在生产环节上的Oracle使用它,但我对Interbase的测试(是的,是的,我知道,两个完全差异的DB,但多数民众赞成我在做什么)SQL提取部分字符串
感谢您的帮助,您可以提供
假设邮编都具有相同的长度,你可以使用substr
。
如果它们不具有相同的长度,则必须使用strlen
函数执行类似的操作。
select substr(clients.lastname, 1, 10)
from clients
您声明UDF这样的:在lib_udf.dll
是这样工作的
Interbase的没有一个内置的子功能,但它确实有一个UDF
(用户定义函数)称为SUBSTR
DECLARE EXTERNAL FUNCTION SUBSTR
CSTRING(80),
SMALLINT,
SMALLINT
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';
甲骨文确实有一个内置的功能SUBSTR你使用这样的:
select substr(clients.lastname, 1, 10)
from clients
- jeroen
这取决于您如何存储邮政编码。如果您仅使用5位数字 那么这应该适用于Oracle,并且可能适用于Interbase。
select * from table where substr(zip,3,3) = '014'
如果存储邮编+ 4和你想要的最后3位数字,有些是5位数字,有些是9位数字,你就必须做到以下几点。可以在两个数据库更好地工作
select * from table where substr(zip,length(zip) -2,3) = '014'
,一个选项是
上使用相同代码的子字符串/右命令,没有where子句。每个记录都有一个zip文件,因此,我需要每个文件的最后三个字符。还有一个可以在两个数据库中工作。感谢名单! – IElite 2011-02-17 19:44:58
没有可以在Oracle和Interbase – RichardTheKiwi 2011-02-17 19:55:50