0

我的表中有一个整数列。它是product id并且具有像

112233001  
112233002  
113311001  
225577001  

此编号 (AABBCCDDD) 由 4 个部分组成:

AA : first level category  
BB : second level category  
CC : third level category  
DDD : counter  

我想在我的SELECT语句中检查条件以选择例如具有 BB = 33 和 AA = 11 的行

请帮忙

4

5 回答 5

4

这是否足够:

select x from table where field >= 113300000 and field < 113400000 
于 2012-06-26T08:43:18.393 回答
1
          Select field from table where substr(field,,) = value
于 2012-06-26T08:41:46.530 回答
1
SELECT * FROM YOURTABLE

WHERE 

substr(PRODUCT_ID, 3, 2)='33'
AND
substr(PRODUCT_ID, 1, 2)='11'

或者

SELECT * FROM YOURTABLE

WHERE 

PRODUCT_ID LIKE '11%33%'

是的,简而言之,您必须转换为字符串

substr 的引用

目的

SUBSTR 函数返回字符的一部分,从字符位置开始,substring_length 个字符长。SUBSTR 使用输入字符集定义的字符计算长度。SUBSTRB 使用字节而不是字符。SUBSTRC 使用 Unicode 完整字符。SUBSTR2 使用 UCS2 代码点。SUBSTR4 使用 UCS4 代码点。

If position is 0, then it is treated as 1.

If position is positive, then Oracle Database counts from the beginning of char to find the first character.

If position is negative, then Oracle counts backward from the end of char.

If substring_length is omitted, then Oracle returns all characters to the end of char. If substring_length is less than 1, then Oracle returns null.

char 可以是任何数据类型CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB。position 和 substring_length must be of datatype NUMBER,或任何可以隐式转换为 NUMBER 的数据类型,并且必须解析为整数。返回值与 char 的数据类型相同。作为参数传递给 SUBSTR 的浮点数会自动转换为整数。

于 2012-06-26T08:44:41.047 回答
0

这似乎可以工作。否则,您可能必须将它们转换为字符串并解析出您需要的值,这会使您的查询慢得多。

SELECT * 
    FROM table t
WHERE t.field >= 113300000
AND t.field < 113400000
于 2012-06-26T08:47:48.073 回答
0

你需要使用_通配符 -

SELECT * 
FROM TABLE
WHERE
FIELD LIKE '1133_____'

在这里,每个_都是一个字符。所以你需要放置相同数量的_以保持长度相同

于 2012-06-26T09:00:17.677 回答