的第一個數字我有一個表:排序列的數量
CREATE TABLE client_details(
...
clientid number(10,0) ,
name varchar2,
...
)
凡clientid
可能是(來自其他來源的外部ID)一些獨特的號碼。
我需要通過clientd
實現濾波,所以系統會顯示所有記錄clientid
始於用戶inputed值
例如:
讓表包含以下數據:
[{clientId=119, name='Bob'},
{clientId=11234,name='Anna'},
{clientId=2,name='Eva'}]
當用戶輸入「11」作爲搜索查詢時,系統將顯示:
[{clientId=119, name='Bob'},
{clientId=11234,name='Anna'}]
當用戶輸入「2」作爲搜索查詢,則系統將顯示:
[{clientId=2, name='Eva'}]
用戶可以輸入任何數量的從0到999999999作爲查詢。
我的初衷是使用類似
SELECT *
FROM client_details
WHERE SUBSTR(client, 0, length_of_query) = 'query'
(其中查詢代表用戶輸入和length_of_query代表查詢長度字符串)
我有點討厭SUBSTR和轉換INT爲字符串在哪裏,sa桌子可能相當大。另一方面,我寧願不改變數據庫結構。
也許有人有一個更好的主意?
我覺得你不喜歡的方法是最好的方法。 –
我也不喜歡'substr',因爲它只能在原始列的固定長度'substr'上創建基於函數的索引 - 使用不同長度的'substr'表達式不會使用該索引。 –
如果爲某個數字的第一個數字指定一些含義是有效的,那麼您所擁有的不是一個數字,而是一個只有合法字符是數字的字符串。您應該重新考慮將其存儲在數字數據類型中。 –