① sql取欄位中某一部分特定數值
如果只是固定取"20/30"比較容易, 只需找到"20/30"在此字元串的開始位置,再截取5個字元的長度就可以了,如:
SELECT CASE WHEN CHARINDEX('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', '20/30') > 0 THEN SUBSTRING('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', CHARINDEX('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', '20/30'),5) ELSE '' END
如果不一定是20/30,而是與"/"前後關聯的數字(eg: 14/20, 33/66,等...),就麻煩了,你可能需要寫一個抽取字元串的函數,如: f_substr(),然後在SQL里調用:
select 用戶.f_substr('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg')
② 請教SQL如何選擇一個欄位里某一部分的方法
一樓的是固定長度的
要是之前或之後長度都不固定,可以這樣寫
instr(str,'/',0,-1)找到'/'的位置
select
subStr(
str
,instr(str,'/',1,1)-2
,5)
from
……
這句話是取/附近5個字元的代碼!
有此資料庫不支持instr可以用:
CHARINDEX
③ sql如何按時間段選擇部分欄位
欄位選好的話,直接在where語句裡面添加個時間條件就可以了啊,oracle 裡面直接添加一個,不過前提是你有時間這個欄位,下面假設你的時間叫做 oper_date吧
select
欄位1,
欄位2
from 表 t
where t.oper_date >to_date('2012-02-01 00:00:00','yyyy-MM-dd HH24:mi:ss')
and t.oper_date < to_date('2012-02-29 23:59:59','yyyy-MM-dd HH24:mi:ss')
這個是oracle下的,DB2下的就用timestamp就行了
④ sql 如何選擇數值大於80%的部分
如果你那些百分數<= 99%
可以直接執行
select * from xxx where b>'80%' ;
如果有130%等
使用:
select * from (select tmp.*,to_number(substr(b,0,instr(b,'%')-1)) c from table tmp) where c>80
⑤ SQL 條件只選擇一個
如果是 SQL Server 或 Access:
select top 1 ...
如果是 MySql:
select ... limit 1
⑥ 如何篩選SQL字元串欄位中部分值
如果需要篩選SQL字元串欄位中部分值,應該怎麼做呢?下面就教您篩選SQL字元串欄位中部分值的記錄的方法,供您參考。例如有一個KKBH(卡口編號)欄位,這是一個字典欄位(對應另一個實體表(卡口表)的編號欄位)。這個欄位的值保存所屬卡口值域{01,02,03}本來想到的是通過or來實現,這樣需要動態生成SQL語句。後來想到一個辦法用charindex搜索SQL字元串的辦法。將所有的要查的卡口編號組成類似'01@02'這樣待查字元串。sql查詢時通過charindex篩選出在待查SQL字元串里有的KKBH的記錄。經測試使用or與使用charindex,兩者在MSSQL中執行效率差不多。具體實現:用戶界面查詢需求:可能搜索N個卡口的記錄(N的值域{1,所有卡口個數})。設計這個UI的形式一共三種:一、一個多選listbox。用戶界面運行時將卡口字典表載入listbox信息。二、兩個listbox,左邊為待選,右邊為已選,中間加兩個按鈕添加與刪除。用戶界面運行時將卡都字典表載入左邊的listbox。三、多個Checkbox。可以在界面設計階段直接做死字典表,即有幾個卡口就話幾個checkbox。或者在程序運行根據字典表繪制動態繪制checkbox。UI的優缺點這里不討論,我這里選擇第三種方式的動態繪制。在查詢階段根據所選卡口生成待選SQL字元串入:"01@02」並將此條件傳回後台查詢服務程序後台查詢服務里只要待查SQL字元串作為參數傳入查詢的SQL語句中(sql片段): charindex(卡口編號,@待查字元串)。當然也可以手動生成SQL方式傳入"charindex(卡口編號,'"+待查字元串+"')".
⑦ sql從查詢結果中選擇中間某部分記錄
我說1個笨方法哈
select top 300 * into #table from table order by 排序條件
delete top 199 * from #table order by排序條件
select * from #table order by 排序條件
說明:
這是用虛擬表寫的,方法比較笨,簡單的鐵定會有,你多想想
我是採取取出來目的記錄,然後過濾掉不要的記錄,剩下的就是你想要的了
因為你是要200~300條,所以必須要有按什麼來排序的條件,排序不同,結果也不同的
你試試,OK,請採納
⑧ sql 選取欄位中某段字元,
如果這個欄位是有規律的,看圖視乎是 開始4個字元+t +3個數字 +t,要獲取2t之間的3個數字比較容易
select SUBSTRING(PRD_NO,6,3) from PRDT; 從第6個字元開始截取3個字元
如果沒有固定規律就比較麻煩了。
⑨ SQL 多條件,任意選擇 查詢方法
實例 public java.util.List<Operator> selectOperatorsConditions(
HashMap<String, String> conditions, Connection conn) {
// 根據條件進行查詢操作員信息
java.util.List<Operator> operatorsByCondition = new ArrayList<Operator>(); StringBuffer sql = new StringBuffer(
"select operator_id,operator_name,is_admin from t_operator"); if (conditions.size() > 0) {
sql.append(" where ");
Iterator<String> keyset = conditions.keySet().iterator();
while (keyset.hasNext()) {
String cols = (String) keyset.next();
sql.append(cols + " = '" + conditions.get(cols) + "' and ");
}
sql.delete(sql.lastIndexOf("and"), sql.length());
}
Statement st = null;
ResultSet rs = null;
try {
if (conn != null) {
st = conn.createStatement();
rs = st.executeQuery(sql.toString()); while (rs.next()) {
Operator operator = new Operator(rs.getString(1), rs
.getString(2), rs.getString(3));
operatorsByCondition.add(operator);
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return operatorsByCondition;
}