隨筆2

24、SQLite中Oracle函數(shù)的替代方法

1) nvl => ifnull

nvl直接替換為ifnull即可
注意:僅檢查值為null的情況旷偿,假如為空字符串('')則不會(huì)觸發(fā)烹俗,在這種情況下不能直接替換

2) decode => case when then

Oracle

SELECT ID, DECODE(inParam, 'byComparedParam', '值1' , '值2') name FROM test_table;

--如果第一個(gè)參數(shù) inParam == 'byComparedParam',則 select 得到的 name 顯示為值1
--如果第一個(gè)參數(shù) inParam != 'byComparedParam'萍程,則 select 得到的 name 顯示為值2

SQLite

select report_code, year, month, day, wind_speed,
case
    when wind_speed >= 40 then 'HIGH'
    when wind_speed >= 30 and wind_speed < 40 then 'MODERATE'
    else 'LOW'
end as wind_severity
from station_data

3) to_char => strftime

Oracle

select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual

SQLite

select strftime('%Y-%m-%d %H:%M:%S', 'now') from t_b_database_basic t
--select strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime') from t_b_database_basic t
select strftime('%Y-%m-%d %H:%M:%S', t.fcreate_time) from t_b_database_basic t

需要注意的是幢妄,假如轉(zhuǎn)換為字符串的是代表當(dāng)前時(shí)間的'now',結(jié)果將會(huì)是utc時(shí)間茫负,顯示為當(dāng)?shù)貢r(shí)間需添加修飾符'localtime'蕉鸳,假如轉(zhuǎn)換的是字段就不用擔(dān)心這個(gè)問題,原因可能是因?yàn)閮?nèi)部處理的所有時(shí)間都默認(rèn)為utc時(shí)間

4) to_date => datetime

Oracle

insert into t_timestamp_temp (create_time) values (to_date('2008-08-08 08:08:08' , 'yyyy-mm-dd hh24:mi:ss'));

SQLite

insert into t_timestamp_temp (create_time) values (datetime('2008-08-08 08:08:08'));
--insert into t_timestamp_temp (create_time) values (datetime('now', 'localtime'));

需要注意的是朽褪,轉(zhuǎn)換為日期時(shí)默認(rèn)處理的是utc時(shí)間置吓,因此使用本地時(shí)間的固定字符串時(shí)不要添加修飾符'localtime',否則時(shí)間會(huì)根據(jù)時(shí)區(qū)改變缔赠,只有在使用'now'時(shí)才需要添加'localtime'修飾符

5) listagg => group_concat

Oracle

--param_code排序并拼接為字符串
select listagg(d.fparam_code, ',') within group(order by d.fparam_code)
  from t_b_meter_detail d where d.fmeter_no = 1

SQLite

--param_code拼接為字符串衍锚,可分組,不可排序
select group_concat(d.fparam_code, ',')
  from t_b_meter_detail d
  group by d.fmeter_no

6) merge into => insert into (...) select ... from ...(merge into替代方法的其中一種)

Oracle

      merge into t_b_meter t using t_b_esubstation m
      on (upper(t.fparent_meter_no) = 'ROOT' and t.fmeter_no = m.fstation_code)
      when not matched then
      insert (fid, fparent_meter_no, fmeter_no, fmeter_mark, fguihao, fmeter_type_code, fmodule_code)
        values (seq_b_meter.nextval, 'ROOT', m.fstation_code, m.fstation_name, m.fstation_name, '0', '0')

SQLite
(when not matched部分)與Oracle的語法相比嗤堰,需要將表名提到insert語句中戴质,insert語句的字段部分保持不變,values部分直接替換為select踢匣,而select從句部分需要有where條件限制以驗(yàn)證using表的字段在merge into表中不存在

      insert into t_b_meter (fparent_meter_no, fmeter_no, fmeter_mark, fguihao, fmeter_type_code, fmodule_code)
      select 'ROOT', m.fstation_code, m.fstation_name, m.fstation_name, '0', '0' from t_b_esubstation m
        where m.fstation_code not in (select t.fmeter_no from t_b_meter t where upper(t.fparent_meter_no) = 'ROOT')

7) merge into => insert into (...) ; update ... (merge into 替代方法的另外一種)

Oracle

    merge into #{TableName} t using (select #{CabinetCode} fguihao from dual) s on (s.fguihao = t.fguihao)
      when matched then
        update set fmeter_no = #{MeterNo}, fcomm_error = #{CommError}
      when not matched then
        insert (fmeter_no, fguihao, fcomm_error) values (#{MeterNo}, #{CabinetCode}, #{CommError})

SQLite
當(dāng)merge into中存在when not matchedwhen matched兩部分告匠,需拆分為insertupdate語句兩部分,其中insert對(duì)應(yīng)when not matched部分离唬,在上文小節(jié)6)中提到
(when matched部分)與Oracle的語法相比后专,需要將表名提到update語句中,update語句的字段部分保持不變输莺,然后在已有基礎(chǔ)上需要添加where從句限制以驗(yàn)證merge into表數(shù)據(jù)符合using表的條件

    insert into #{TableName} (fmeter_no, fguihao, fcomm_error)
    select #{MeterNo}, #{CabinetCode}, #{CommError} from dual
      where #{CabinetCode} not in (select t.fguihao from #{TableName} t);
    update #{TableName} set fmeter_no = #{MeterNo}, fcomm_error = #{CommError}
      where fguihao = #{CabinetCode,jdbcType=VARCHAR}

8) 查詢所有表 user_tables => sqlite_master

Oracle

select table_name from user_tables
  order by table_name

SQLite

SELECT name table_name FROM sqlite_master
  WHERE type='table' --類型有table, trigger等
  ORDER BY name;

9) 查詢表字段 user_tab_columns => pragma table_info(...)

Oracle

    select u.column_name, u.data_type, u.table_name from user_tab_columns u
      where u.table_name = '#{TableName}'
      order by u.column_name

SQLite

    pragma table_info('#{TableName}')
pragma table_info 結(jié)果

name對(duì)應(yīng)column_name戚哎,type對(duì)應(yīng)data_type

n) =>

Oracle


SQLite


25苞笨、SQLite小知識(shí)

1) 限制返回結(jié)果條數(shù)

select * from t_b_meter limit 20

26褪贵、Windows開機(jī)自動(dòng)登錄

1) 步驟

打開運(yùn)行,運(yùn)行命令:netplwiz


命令

取消下圖中勾選框,點(diǎn)擊應(yīng)用并輸入用戶名密碼宪塔,然后確定即可


界面

輸入用戶名密碼

2) 假如沒有勾選框

沒有勾選框

運(yùn)行命令regedit若治,打開注冊(cè)表城榛,在地址欄輸入
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device
然后回車芽腾,將DevicePasswordLessBuildVersion項(xiàng)的值改成0然后確定


修改值為0

修改完成后再重新進(jìn)行步驟1)即可

27、BOOTP/DHCP配置工具一般配置步驟

1) 打開軟件后疏唾,有些工具會(huì)自動(dòng)搜索MAC地址蓄氧,假如不支持就手動(dòng)點(diǎn)擊界面的搜索功能按鈕

Ethernet IP Configuration

BootP DHCP Commissioning Tool

IP Setting Tool

2) 設(shè)置IP

2.1) Ethernet IP Configuration 工具

選中要設(shè)置的設(shè)備,點(diǎn)enable dhcp荸实,再輸入要設(shè)置的ip匀们,然后點(diǎn)set ip configuration


Ethernet IP Configuration 操作步驟

2.2) BootP DHCP Commissioning Tool

點(diǎn)擊“Add Relation”(或“Add to Relation List”),輸入IP地址准给,點(diǎn)擊“OK”


BootP DHCP Commissioning Tool 操作步驟

2.3) IP Setting Tool

選中設(shè)備泄朴,點(diǎn)擊“IP地址設(shè)定”,在彈出窗口內(nèi)輸入IP地址露氮,并點(diǎn)擊“OK”


IP Setting Tool 操作步驟

3) 最好點(diǎn)disable bootp/dhcp祖灰,或者其它關(guān)閉BOOTP/DHCP功能的方法,以使設(shè)置的ip地址成為靜態(tài)的

Ethernet IP Configuration 關(guān)閉DHCP

BootP DHCP Commissioning Tool 關(guān)閉DHCP

28畔规、反正切函數(shù)相加減的公式

arctan A + arctan B=arctan[(A+B) / (1-AB)]
arctan A - arctan B=arctan[(A-B) / (1+AB)]

29局扶、程序延時(shí)開機(jī)啟動(dòng)

要實(shí)現(xiàn)程序的延時(shí)啟動(dòng),可以通過創(chuàng)建一個(gè)批處理文件來實(shí)現(xiàn)叁扫。以下是在Windows系統(tǒng)中實(shí)現(xiàn)程序延時(shí)啟動(dòng)的步驟:

1) 打開文本編輯器(例如記事本)

在文本編輯器中輸入以下內(nèi)容:

@echo off
timeout /t [延時(shí)時(shí)間(秒)]
start “” “[程序路徑]”

其中三妈,[延時(shí)時(shí)間(秒)]是你想要的延時(shí)時(shí)間,[程序路徑]是你要啟動(dòng)的程序的完整路徑莫绣。
例如畴蒲,如果你想要延時(shí)10秒啟動(dòng)程序,程序的完整路徑是"C:\Program Files\Example\example.exe"对室,那么批處理文件的內(nèi)容應(yīng)該是:

@echo off
timeout /t 10
start “” “C:\Program Files\Example\example.exe”

2) 將文件保存為批處理文件(以.bat為擴(kuò)展名)模燥,例如"delayed_startup.bat"

3) 將批處理文件或其快捷方式移動(dòng)到Windows的啟動(dòng)文件夾中

啟動(dòng)文件夾的路徑通常是:
C:\Users[用戶名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
其中,[用戶名]是你的Windows用戶名掩宜。
或者通過在“運(yùn)行”中執(zhí)行命令“shell:startup”也可以打開“啟動(dòng)文件夾”

30蔫骂、EXCEL中提取單元格內(nèi)容內(nèi)多行文本的第一行

1) 換行符

CHAR(10)

2) 判斷是否有換行符

ISERROR(FIND(CHAR(10),A1))

假如沒有換行符,此判斷將返回true

3) 提取第一行內(nèi)容

LEFT(A1,FIND(CHAR(10),A1)-1)

4) 判斷是否有換行符牺汤,假如有則提取第一行內(nèi)容辽旋,否則獲取全部內(nèi)容

IF(ISERROR(FIND(CHAR(10),A1)),A1,LEFT(A1,FIND(CHAR(10),A1)-1))

31、RSLinx內(nèi)為PLC通信模塊添加ip地址

添加ip

添加成功

32、ipv4設(shè)為靜態(tài)地址补胚,系統(tǒng)卻使用自動(dòng)配置的ipv4地址

現(xiàn)象

可能原因:
此ip地址已被路由器分配出去固该,導(dǎo)致不可用,此時(shí)需修改為不沖突的地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末糖儡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子怔匣,更是在濱河造成了極大的恐慌握联,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件每瞒,死亡現(xiàn)場(chǎng)離奇詭異金闽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)剿骨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門代芜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人浓利,你說我怎么就攤上這事挤庇。” “怎么了贷掖?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵嫡秕,是天一觀的道長。 經(jīng)常有香客問我苹威,道長昆咽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任牙甫,我火速辦了婚禮掷酗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘窟哺。我一直安慰自己泻轰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布脏答。 她就那樣靜靜地躺著糕殉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪殖告。 梳的紋絲不亂的頭發(fā)上阿蝶,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音黄绩,去河邊找鬼羡洁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛爽丹,可吹牛的內(nèi)容都是我干的筑煮。 我是一名探鬼主播辛蚊,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼真仲!你這毒婦竟也來了袋马?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤秸应,失蹤者是張志新(化名)和其女友劉穎虑凛,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體软啼,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡桑谍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了祸挪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锣披。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖贿条,靈堂內(nèi)的尸體忽然破棺而出雹仿,到底是詐尸還是另有隱情,我是刑警寧澤整以,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布盅粪,位于F島的核電站,受9級(jí)特大地震影響悄蕾,放射性物質(zhì)發(fā)生泄漏票顾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一帆调、第九天 我趴在偏房一處隱蔽的房頂上張望奠骄。 院中可真熱鬧,春花似錦番刊、人聲如沸含鳞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝉绷。三九已至,卻和暖如春枣抱,著一層夾襖步出監(jiān)牢的瞬間熔吗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工佳晶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留桅狠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像中跌,于是被迫代替她去往敵國和親咨堤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容