2016年5月30日 星期一

[DB]Oracle與MS SQL自動編號的比較

MS SQL在自動編號上比較方便,只要將欄位設定為IDENTITY(1,1)就可以了
但在Oracle就要先增加一個Sequence,然後利用這個Sequence來產生編號

MS SQL
--建立資料表
CREATE TABLE [Table]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL
) ON [PRIMARY]


--新增一筆資料
INSERT INTO [TABLE] VALUES('ABC')


ORACLE
--建立資料表
CREATE TABLE "TEST"
(
"ID" NUMBER,
"NAME" NVARCHAR2(50)
) ;

--建立Sequence
CREATE SEQUENCE "SEQ_TEST"
MINVALUE 1
MAXVALUE 999999999
INCREMENT BY 1
START WITH 1 ;

--新增一筆資料並利用Sequence自動產生編號
INSERT INTO TEST VALUES(SEQ_TEST.NEXTVAL,'ABC')

[英文學習]這些英文千萬別不懂裝懂

有些不是非常確定正確與否 先以紅色註記之

◆Sporting house 妓院(不是:體育室)

◆Dead president 美鈔(不是:死了的總統)

◆Service station 加油站(不是:服務站)

◆Rest room 廁所(不是:休息室)

◆Busboy 餐館勤雜工(不是:公汽售票員)

◆Dry goods <美>紡織品 <英>穀物(不是:乾貨)

◆Heart man 換心人(不是:有心人)

◆Tea shop 茶館;小吃店(不是:茶葉店)

◆Senior citizen 老年人(不是:高級公民)

◆Wash one’s hands 上廁所(不是:洗手)

◆A busy body 愛管閒事的人(不是:忙人)

◆A black sheep 害群之馬(不是:一隻黑羊)

◆Be taken in 受騙,上當(不是:被接納)

◆Pull sb’s leg 開玩笑(不是:拖後腿)

◆African American 美國黑人(不是:非洲美國人)

◆Eat one’s words 收回前言,改正錯話(不是:食言)

◆Mad doctor 精神病科醫生(不是:發瘋的醫生)

◆Eleventh hour 最後時刻(不是:十一點)

◆Personal remark 人身攻擊(並非個人評論)

◆Sweet water 淡水(不是:糖水或者甜水)

◆Confidence man 騙子(不是:信得過的人)

◆Criminal lawyer 刑事律師(不是:犯罪的律師)

◆Dressing room 化粧室(不是:試衣間或者更衣室)

◆Horse sense 常識(不是:馬的感覺)

◆Capital idea 好主意(不是:資本主義思想)

◆Familiar talk 庸俗的交談(不是:熟悉的談話)

◆Black tea紅茶 (不是:黑茶)

◆Green hand 新手 (不是:綠手)

◆Have a fit 勃然大怒(不是:試穿)

◆Black art 妖術(不是:黑色藝術)

◆White coal (作動力來源用的)水

◆Chinese dragon 麒麟(不是:中國龍)

◆Red tape 官僚習氣(不是:紅色帶子)

◆China policy 對華政策(不是:中華政策)

◆White man 忠實可靠的人(不是:皮膚白色的人)

◆Black stranger 完全陌生的人(不是:陌生的黑人)

◆Eat ones words 收回前言(不是:食言)

◆An apple of love 番茄(不是:愛情之果)

◆Handwriting on the wall 不祥之兆(不是:大字報)

◆Bring down the house 博得滿堂喝彩(不是:推倒房子)

◆Blind date(由第三者安排的)男女初次見面(並非盲目的約會或者是瞎約會)

◆Roadside business 汽車飯店;汽車旅館;汽車影院(不是:路邊店 )

◆American Dream 美國的生活方式,美國人的自由民主觀念(不是:美國夢)

◆Yellow book 黃皮書(法國政府報告書,以黃紙為封,不是:黃色書籍)

◆Blue stocking 女學者,女才子(不是:藍色長筒襪)

◆American beauty 一種玫瑰,名叫美麗動人(不是:美國美女)

◆English disease 軟骨病(不是:英國病)

◆Indian summer 愉快寧靜的晚年(不是:印度的夏日)

◆Greek gift 害人的禮品(不是:希臘的禮物)

◆Spanish athlete 吹牛的人(不是:西班牙的運動員)

◆French chalk 滑石粉(不是:法國粉筆)

◆In ones birthday suit 赤身裸體(不是:穿著生日禮服)

◆Make ones hair stand on end 令人毛骨悚然,恐懼(不是:令人髮指,氣憤)

◆Think a great deal of oneself 高看或者看重自己(不是:為自己想的很多)

◆Pull up ones socks 鼓起勇氣(不是:提上襪子)

◆Have the heart to do 用於否定句,忍心做(不是:有心做或者有意做)

◆What a shame 多可惜,真遺憾(不是:多可恥)

◆You don’t say 是嗎?(不是:你別說)

◆You can say that again 說的好(不是:你別說)

◆I haven’t slept better 我睡得很好(不是:我從未睡好過)

轉貼自 https://www.facebook.com/pages/每天學一句輕鬆成為英文達人/

2016年5月23日 星期一

[DB]取得DB裡所有Table Name

Oracle
SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE = 'TABLE'

MS SQL
SELECT * FROM INFORMATION_SCHEMA.TABLES

ACCESS
SELECT * FROM MSYSOBJECTS

[SQL]MS SQL與Oracle判斷欄位是否為NULL的方法比較,COALESCE()、ISNULL()、NVL()

COALESCE(),這個屬於ANSI標準,可以用在MS SQL或Oracle
語法:
SELECT COALESCE(FIELD,'*') FROM TABLE

Oracle專用語法
SELECT NVL(FIELD,'*') FROM TABLE

MS SQL專用語法
SELECT ISNULL(FIELD,'*') FROM TABLE
PS:ISNULL()的效能會比COALESCE()佳

[Oracle]ORA-00904 invalid column name 無效的ID

遇到客戶使用SQL Server創建一個View
使用 Select * From View@DBLink時可以正常查詢
但是指定欄位名稱時
就會報錯ORA-00904 invalid column name 無效的ID

欄位的名稱是TAX_RATE跟TAX_RULE,應該不是保留字(Reserved Word)
使用PL SQL Developer查詢時發現這兩個欄位變成小寫(View裡是大寫)
於是死馬當活馬醫
把SQL Server創建View的語法,指定欄位為"TAX_RATE"跟"TAX_RULE"
在Oracle環境下就可以正常查詢了

關於Column在Oracle是有限制的,條件如下
Action Enter a valid column name. A valid column name must begin with a letter, be less than or equal to 30 characters, and consist of only alphanumeric characters and the special characters $, _, and #. If it contains other characters, it must be enclosed in double quotation marks. It may not be a reserved Word.

所以Create Table時如果有用到關鍵字需要用雙引號標起來,不然會報錯
create table t
 (  "USER"      VARCHAR2(10)   )
查詢的時候也有影響
SQL> show user
User is "phoenix"

SQL> insert into t values('abc');
1 row inserted

SQL> select * from t;
USER
----------
abc

SQL> select user from t;
USER
------------------------------
PHOENIX

SQL> select user,"USER" from t;
USER                           USER
------------------------------ ----------
PHOENIX                        abc

另外Oracle傾向於將Column字母轉換爲大寫字母,SQL Server則對大小寫更加敏感。
這就是最有可能造成ORA-00904 invalid column name的原因。

其他狀況可參考 http://tc.wangchao.net.cn/bbs/detail_1775447.html

2016年5月17日 星期二

[程式相關]CSV匯出狀況解決方式[逗號(,)及0開頭變成數字格式]

撰寫匯出CSV檔程式的時候經常遇到資料內容本身有逗號(,)會自動往後退一格的情況
或是文字欄位有0開頭的,CSV打開時會變成0去掉(變成數字格式)
經查解法如下:

Q1:當欄位內容中包含逗號(,),想在excel內正常顯示逗號(,)
A1:使用雙引號(")將整個欄位包起來,舉例:$result = "aaa,\"bbb,ccc\",000007\n";

Q2:當欄位內容包含換行符號(\n),想在excel內的儲存格換行
A2:同A1

Q3:當欄位內容有手機之類以0開頭的數字,想正確顯示
A3:同A1,並在雙引號前加上一個等號(=),舉例:$result = "aaa,\"bbb,ccc\",=\"000007\"\n";

Q4:當欄位內容有雙引號("),想在excel內正常顯示雙引號(")
A4:同A1,並將要顯示的雙引號改為2個雙引號,舉例:$result =
"\"xx\"\"aaa\"\"xx\",\"bbb,ccc\",=\"000007\"\n";

2016年4月21日 星期四

[航空里程累積]ANA里程累積除華南紅利點數兌換外之其他方式(Edy,Jalan,Openpoint)

1.於日本境內使用具備Edy功能的ANA會員卡,消費每滿200日圓可以累積一哩

Edy卡片於日本各大便利商店 超市 麥當勞 藥妝店都可以使用
當然里程的累積速度比不上使用華南信用卡消費(200日圓約60台幣,華南50台幣可換一哩)
但是在不能使用刷卡消費的地方就是最好的選擇了
換發卡片方式:Apply from the member-only functions in the web page, or over the telephone.
若有要申辦具有 Edy 功能的會員卡可以打電話至02-25211989,說明要申請 Edy 會員卡即可。
接下來會收到兩張卡,一張一般的會員卡(只要完成註冊會員就會有這張),
另一張則是有Edy功能的會員卡(第二步打客服申請才有),寄送時間約4~6週。
當然也可以直接使用網路,不過日文苦手的人就打客服真的比較快
補充:
要看Edy剩餘金額的方法(手機NFC功能必備),可以下載這個App
『マルチ残高リーダFree /Suicaやnanacoなど対応』
Android下載點:https://play.google.com/store/apps/details?id=jp.co.shekeen.BalanceReaderFree
想要看出卡片的消費及進出站明細的朋友可以下載「Edy Reader」
Android下載點:https://play.google.com/store/apps/details?id=yanzm.products.edyreader

2.訂房網站Jalan
我遊日本最愛用的訂房網站
並不能訂完房間後補申請,必須在訂房的時候就使用以下連結進入Jalan網站
一樣是200日圓累積一哩

3.使用Openpoint兌換
2016/04/12才正式開始的方法,53000點Openpoint可以兌換200ANA Mileage
200哩ANA Mileage需要刷華南卡10000元台幣
但53000點Openpoint只需要在各大聯名卡會員日消費滿5300就可以累積到
相對來說簡單許多,請務必嘗試唷~~
兌換方法可詳見官網說明

日本ANA官網有其他ANA Mileage的累積方式,如果是日本人可以申辦
ANA聯名信用卡是最好(台灣是中國信託,不過回饋率低於華南)
其他相關店家或是旅館就請自己多加注意,如果有住ANA Hotel或是於ANA免稅店消費
請務必記得題是你的會員卡唷