2016年6月13日 星期一

Join的差異性

前幾天剛開始學習程式的表弟問我說 Left Join 與 Inner Join 差別在哪?

我自己雖然對DB與SQL也並不是說很強的狀況,但我還是懂甚麼是JOIN(其實是在實習時懂得)但是要我解釋我還真不太會形容

左邊的表
PKFK
1a1
2a2
3a3
右邊的表
PKDescription
a2a2很棒
a3a3很棒
a4a4很棒

Inner join 

簡單來說就是 左邊的表 與右邊的表 都要相等才會帶出資料

Select * from table1, table2
Where table1.FK=table2.PK 


Left join

是以左邊為主  左邊的表資料全部留下,右邊的表有符合就一起帶入
表一所有資料都要帶出,並且帶出有符合的表二資料
Select * from table1
Left outer join table2 on table1.FK = table2.PK 

Right join

是以右邊為主  右邊的表資料全部留下,左邊的表有符合就一起帶入
表二所有資料都要帶出,並且帶出有符合的表一資料
Select * from table1
Right outer join table2 on table1.FK = table2.PK 

FULL join

把兩張表的所有資料都一併帶出

2016年4月25日 星期一

正則表達式

何謂正則式?

正規表示式使用單個字串來描述、符合一系列符合某個句法規則的字串

甚麼時候會用到?

正則運算式通常被用來檢索、取代那些符合的字串。

字元描述
^匹配輸入的開始位置。
$匹配輸入的結尾。
*匹配前一個字符零次或幾次。例如,"zo*"可以匹配"z"、"zoo"。 
+匹配前一個字符一次或多次。例如,"zo+"可以匹配"zoo",但不匹配"z"。 
?匹配前一個字符零次或一次。例如,"a?ve?"可以匹配"never"中的"ve"。
.匹配換行符以外的任何字符。 
{n}n是一個非負整數。符合確定的n次。例如,「o{2}」不能符合「Bob」中的「o」,但是能符合「food」中的兩個o。
{n,}n是一個非負整數。至少符合n次。例如,「o{2,}」不能符合「Bob」中的「o」,但能符合「foooood」中的所有o。「o{1,}」等價於「o+」。「o{0,}」則等價於「o*」。
{n,m}mn均為非負整數,其中n<=m。最少符合n次且最多符合m次。例如,「o{1,3}」將符合「fooooood」中的前三個o。「o{0,1}」等價於「o?」。請注意在逗號和兩個數之間不能有空格。
(pattern) 與模式匹配並記住匹配。匹配的子字符串可以從作為結果的 Matches 集合中使用 Item [0]...[n]取得。如果要匹配括號字符(和 ),可使用"(" 或 ")"。 
x|y一個字符集。與括號中字符的其中之一匹配。例如,"[abc]" 匹配"plain"中的"a"。
[xyz]符合pattern並取得這一符合的子字串。該子字串用於向後參照。所取得的符合可以從產生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中則使用$0…$9屬性。要符合圓括號字元,請使用「\(」或「\)」。
[^xyz]一個否定的字符集。匹配不在此括號中的任何字符。例如,"[^abc]" 可以匹配"plain"中的"p"。
[a-z]表示某個範圍內的字符。與指定區間內的任何字符匹配。例如,"[a-z]"匹配"a"與"z"之間的任何一個小寫字母字符。 
[^m-z]否定的字符區間。與不在指定區間內的字符匹配。例如,"[m-z]"與不在"m"到"z"之間的任何字符匹配。 
b與單詞的邊界匹配,即單詞與空格之間的位置。例如,"erb" 與"never"中的"er"匹配,但是不匹配"verb"中的"er"。 
B與非單詞邊界匹配。"ea*rB"與"never early"中的"ear"匹配。
d與一個數字字符匹配。等價於[0-9]。 
D與非數字的字符匹配。等價於[^0-9]。 
f與分頁符匹配。
n與換行符字符匹配。
r與回車字符匹配。
s與任何白字符匹配,包括空格、制表符、分頁符等。等價於"[ fnrtv]"。 
S與任何非空白的字符匹配。等價於"[^ fnrtv]"。
t符合一個制表符。等價於\x09和\cI
v與垂直制表符匹配。
w與任何單詞字符匹配,包括下劃線。等價於"[A-Za-z0-9_]"。 
num匹配 num個,其中 num 為一個正整數。引用回到記住的匹配。例如,"(.)1"匹配兩個連續的相同的字符。 
xnxn 匹配n,其中n是一個十六進制的換碼值。十六進制換碼值必須恰好為兩個數字長。例如,"x41"匹配"A"。"x041"等價於"x04" 和 "1"。



EX:
  Email : /^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$/,    
  Phone : /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,    
  Mobile : /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/,    
  Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,    
  IdCard : /^\d{15}(\d{2}[A-Za-z0-9])?$/,    
  Currency : /^\d+(\.\d+)?$/, 
  Number : /^\d+$/,    
  Zip : /^[1-9]\d{5}$/,    
  QQ : /^[1-9]\d{4,8}$/,    
  Integer : /^[-\+]?\d+$/,    
  Double : /^[-\+]?\d+(\.\d+)?$/,    
  English : /^[A-Za-z]+$/,    
  Chinese :  /^[\u0391-\uFFE5]+$/,
  負整數  : /^-[0-9]*[1-9][0-9]*$/  //負整數 
  /^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/  
負浮點數 


set RegEx = New RegExp   '建立正則表達式
regEx.Pattern = patterns ' 設置模式
regEx.IgnoreCase = True ' 設置是否區分字符大小寫
regEx.Global = True '設置全局可用性
regEx.compile  '編譯正則式
regEx.exec       '檢查字串中指定的值並返回找到的值 
regEx.Test        '檢查字串中的值是否相同 回傳True /False

實作的例子 身分證驗證與 日期驗證
function Del_PAXV() {
  var test1 = document.getElementById("test").value;
  var passwd1 = document.getElementById("passwd").value;

var temp =/^\d{4}-\d{2}-\d{2}/ ;
var temp1 = /^[A-Z]{1}[0-9]{9}$/;
if (confirm("是否是您輸入的密碼呢?")){
if (temp1.test(passwd1) == true){
alert("密碼格式正確");
}else{
alert("密碼格式不正確");
document.getElementById("passwd").value = "";
}
}
else{
alert("密碼格式錯誤");
}
if (confirm("是否是您輸入的日期呢?")){
alert("OK 已收到");
if (temp.test(test1) == true){
alert("是日期格式");
}else{
alert("不適日期格式,請重新輸入");
document.getElementById("test").value = "";
return false ;
}
}
else
{
alert("請重新輸入");
document.getElementById("test").value = "";
return false ;
}

escape、encodeURI、endcodeURIcomponent

escape、encodeURI、endcodeURIcomponent

這些都是 Javascript 幫中文進行轉碼的語法

escape(String args), unescape(String args)


  • escape會處理 # 字 並轉化成 %23 並把空白轉換成  + 中文字處理為Unicode
  • 不會轉換的字符為 @ * / +


encodeURI(String  args) , decodeURI(String args)


  • encodeURI 不會處理 #字 會處理空白字  轉換為 %20 中文字處理為 UTF-8
  • 不會轉換的字符為 ! @ # $& * ( ) = : / ; ? + '


encodeURIComponent(String args),decodeURIComponent(String args)



  • encodeURIComponent 會處理 #字 轉換成%23 會處理空白字  轉換為 %20 中文字處理為 UTF-8
  • 不會轉換的字符為 ! *  () '




2016年3月31日 星期四

類別 VS 物件

何謂類別?


  • 類別算是一個設計圖、一個範本、一個可參考的東西,他沒有 實體 的概念,屬靜態

何謂物件?

  •  物件是一個看的到、摸的到的實體,屬於動態的,狀態會隨時改變,但架構與行為不會改變。  
基本上,類別只用來決定物件產生時的樣子,當物件形成時,物件就變成一個記憶體中的空間,記載著物件活動時暫存的資料與狀態,並且當有類別存在時有能力透過方法執行一些動作。







2016年3月25日 星期五

GridView常用欄位們的屬性

Bound Field 

常用屬性
名稱
功能
取得或設定要繫結至 BoundField 物件的資料欄位的名稱。
取得或設定字串,指定欄位值的顯示格式。
取得或設定資料控制項欄位的頁尾樣式。
取得或設定顯示在資料控制項欄位之頁尾項目中的文字。
取得或設定顯示在資料控制項欄位的標頭項目中之影像的 URL
取得或設定資料控制項欄位的標頭樣式。
取得或設定顯示在資料控制項標頭中的文字。
取得或設定值,表示在 BoundField 物件中顯示欄位值之前,是否對其進行 HTML 編碼。
取得或設定欄位值為 null 時所顯示的欄位標題。
取得或設定值,表示是否可以在編輯模式下修改欄位值。
取得或設定值,指示是否呈現資料控制項欄位的標頭項目。
取得或設定資料來源控制項用於排序資料的排序運算式。
取得或設定值,決定控制項是否驗證用戶端輸入。
取得狀態資訊的字典,允許您在相同頁面的多個要求之間,儲存和還原
取得或設定值,指示是否呈現資料控制項欄位。

CheckBoxField

常用屬性
取得或設定要繫結至 CheckBoxField 物件之資料欄位的名稱。
取得或設定字串,指定欄位值的顯示格式。 CheckBoxField 類別不支援這個屬性。
取得或設定資料控制項欄位的頁尾樣式。
取得或設定顯示在資料控制項欄位之頁尾項目中的文字。
取得或設定顯示在資料控制項欄位的標頭項目中之影像的 URL
取得或設定資料控制項欄位的標頭樣式。
取得或設定顯示在資料控制項標頭中的文字。
覆寫 BoundField.HtmlEncode 屬性。
取得或設定值,這個值表示格式化文字在顯示之前是否應該先經過 HTML 編碼。
取得值,指示 DataControlField 物件在其父資料繫結控制項處於插入模式時是否可見。
取得值,指出 DataControlField 物件是否正在將變更儲存到它的檢視狀態。
取得由資料控制項欄位顯示之任何文字基礎內容的樣式。
取得或設定值,表示是否可以在編輯模式下修改欄位值。
取得或設定值,指示是否呈現資料控制項欄位的標頭項目。
取得或設定資料來源控制項用於排序資料的排序運算式。
取得或設定要在 CheckBoxField 物件中每個核取方塊旁邊顯示的標題。
取得或設定值,決定控制項是否驗證用戶端輸入。
取得狀態資訊的字典,允許您在相同頁面的多個要求之間,儲存和還原 
取得或設定值,指示是否呈現資料控制項欄位。


CommandField

屬性
取得或設定要在按鈕欄位中顯示的按鈕類型。(可設定為buttonImageLink)
取得或設定要為 CommandField 欄位中 [取消] 按鈕顯示之影像的 URL
取得或設定顯示在 CommandField 欄位中之 [取消] 按鈕的標題。
取得或設定值,指出是否要在使用者按一下 CommandField 欄位中的按鈕時執行驗證。
取得或設定要為 CommandField 欄位中 [刪除] 按鈕顯示之影像的 URL
取得或設定 CommandField 欄位中 [刪除] 按鈕的標題。
取得或設定要為 CommandField 欄位中 [編輯] 按鈕顯示之影像的 URL
取得或設定 CommandField 欄位中 [編輯] 按鈕的標題。
取得或設定資料控制項欄位的頁尾樣式。
取得或設定顯示在資料控制項欄位之頁尾項目中的文字。
取得或設定顯示在資料控制項欄位的標頭項目中之影像的 URL
取得或設定資料控制項欄位的標頭樣式。
取得或設定顯示在資料控制項欄位之標頭項目中的文字。
取得或設定要為 CommandField 欄位中 [插入] 按鈕顯示之影像的 URL
取得或設定 CommandField 欄位中 [插入] 按鈕的標題。
取得或設定要為 CommandField 欄位中 [新增] 按鈕顯示之影像的 URL
取得或設定 CommandField 欄位中 [新增] 按鈕的標題。
取得或設定要為 CommandField 欄位中 [選取] 按鈕顯示之影像的 URL
取得或設定 CommandField 欄位中 [選取] 按鈕的標題。
取得或設定值,指出是否要在 CommandField 欄位中顯示 [取消] 按鈕。
取得或設定值,指出是否要在 CommandField 欄位中顯示 [刪除] 按鈕。
取得或設定值,指出是否要在 CommandField 欄位中顯示 [編輯] 按鈕。
取得或設定值,表示是否在 ButtonFieldBase 物件中顯示標頭區段。
取得或設定值,指出是否要在 CommandField 欄位中顯示 [新增] 按鈕。
取得或設定值,指出是否要在 CommandField 欄位中顯示 [選取] 按鈕。
取得或設定要為 CommandField 欄位中 [更新] 按鈕顯示之影像的 URL
取得或設定 CommandField 欄位中 [更新] 按鈕的標題。
取得或設定值,這個值會指定控制項是否驗證用戶端輸入。
取得或設定在按一下 ButtonFieldBase 物件中的按鈕時要驗證的驗證控制項群組名稱。
取得狀態資訊的字典,允許您在相同頁面的多個要求之間,儲存和還原 DataControlField 物件的檢視狀態。
取得或設定值,指示是否呈現資料控制項欄位。

HyperLinkField

屬性
取得或設定資料來源中的欄位名稱,這些欄位用來建構 HyperLinkField 物件中超連結的 URL
取得或設定字串,指定 HyperLinkField 物件中超連結之 URL 的呈現格式。
取得或設定資料來源中的欄位名稱,這個欄位包含 HyperLinkField 物件中超連結標題所要顯示的文字。
取得或設定字串,指定 HyperLinkField 物件中超連結標題的顯示格式。
取得或設定資料控制項欄位的頁尾樣式。
取得或設定顯示在資料控制項欄位之頁尾項目中的文字。
取得或設定顯示在資料控制項欄位的標頭項目中之影像的 URL
取得或設定資料控制項欄位的標頭樣式。
取得或設定顯示在資料控制項欄位之標頭項目中的文字。
取得或設定值,指示是否呈現資料控制項欄位的標頭項目。
取得或設定資料來源控制項用於排序資料的排序運算式。
取得或設定目標視窗或框架,在按一下 HyperLinkField 物件中的超連結時,這個視窗或框架會顯示連結的網頁。
取得或設定 HyperLinkField 物件中每個超連結所要顯示的文字。
取得或設定值,這個值會指定控制項是否驗證用戶端輸入。
取得狀態資訊的字典,允許您在相同頁面的多個要求之間,儲存和還原 DataControlField 物件的檢視狀態。
取得或設定值,指示是否呈現資料控制項欄位。

TemplateField

屬性
取得或設定值,表示 TemplateField 物件所繫結的值是否應轉換為 null (如果其為 Empty)
取得或設定顯示 TemplateField 物件中處於編輯模式之項目的樣板。
取得或設定資料控制項欄位的頁尾樣式。
取得或設定顯示 TemplateField 物件之頁尾區段的樣板。
取得或設定顯示在資料控制項欄位之頁尾項目中的文字。
取得或設定顯示在資料控制項欄位的標頭項目中之影像的 URL
取得或設定資料控制項欄位的標頭樣式。
取得或設定顯示 TemplateField 物件之標頭區段的樣板。
取得或設定顯示在資料控制項欄位之標頭項目中的文字。
取得或設定顯示 TemplateField 物件中處於插入模式之項目的樣板。
取得由資料控制項欄位顯示之任何文字基礎內容的樣式。
取得或設定顯示資料繫結控制項中項目的樣板。
取得或設定值,指示是否呈現資料控制項欄位的標頭項目。
取得或設定資料來源控制項用於排序資料的排序運算式。
取得或設定值,這個值會指定控制項是否驗證用戶端輸入。
取得狀態資訊的字典,允許您在相同頁面的多個要求之間,儲存和還原 DataControlField 物件的檢視狀態。
取得或設定值,指示是否呈現資料控制項欄位。