2012-06-26 53 views
0

我的表中有一個整數列。這是product id,並具備此編號(AABBCCDDD)由4個部分組成SQL按整數字段的條件選擇

112233001 
112233002 
113311001 
225577001 

值:

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

我想檢查情況在我SELECT語句來選擇,例如有BB行= 33和AA = 11

請幫

+0

我認爲你正在尋找一個按位和。參見: http://stackoverflow.com/questions/360844/mysql-bitwise-operations-bloom-filter – Blazes

回答

1
SELECT * FROM YOURTABLE 

WHERE 

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

OR

SELECT * FROM YOURTABLE 

WHERE 

PRODUCT_ID LIKE '11%33%' 

沒錯總之,你必須轉換爲字符串

reference of substr

目的

SUBSTR函數返回char的一部分,從字符位置開始,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的浮點數自動轉換爲整數。

+0

作爲'11'和'13'是例子,我不能使用第二個Select語句,但第一個正是我想要的。謝謝! –

+0

是否有任何需要將我的product_id轉換爲字符串?或substr,可以幫我嗎? –

1
  Select field from table where substr(field,,) = value 
4

請問這就夠了:

select x from table where field >= 113300000 and field < 113400000 
+1

+1與'cast'和'substr'不同,它可以利用索引。 –

0

這似乎可以工作。否則,您可能必須將它們轉換爲字符串,然後解析出您需要的值,這會使查詢速度變慢。

SELECT * 
    FROM table t 
WHERE t.field >= 113300000 
AND t.field < 113400000 
0

ü需要使用通配符_焦炭 -

SELECT * 
FROM TABLE 
WHERE 
FIELD LIKE '1133_____' 

在這裏,每個_是一個字符。所以你需要把相同數量的_保持相同的長度