2011年4月26日 星期二

SQL 計算欄位字串出現次數

資料表建立

CREATE TABLE `test1` (
`C1` int(11) NOT NULL auto_increment,
`C2` varchar(11) default NULL,
PRIMARY KEY (`C1`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8


INSERT INTO `test1` VALUES (1, '10442');
INSERT INTO `test1` VALUES (2, '4403');
INSERT INTO `test1` VALUES (3, '6513');
INSERT INTO `test1` VALUES (4, '2222');

SELECT 語法 for Mysql

方式 1

SELECT CHAR_LENGTH(Replace(C2,'4','4z'))-CHAR_LENGTH(C2) FROM TEST1 where C2 LIKE '%4%'

方式 2

SELECT CHAR_LENGTH(C2)-CHAR_LENGTH(Replace(C2,'4','')) FROM TEST1 where C2 LIKE '%4%'


原理 :
用replace的方式 , 取出 4 後將 4的部份變更字元數 , 就會增加字串的長度或減少 , 在使用 Len ( SQL ) , CHAR_LENGTH ( MYSQL ) 來計算字串的長度 , 將變更後的長度和原本長度互減就可找出字串欄位出現的次數

2011年4月21日 星期四

正規化表示法

資料來源:張智星的網站 – 正規表示式

通用範例
通用式 說明及範例 比對不成立之字串
/a/ 含字母 "a" 的字串,例如 "ab", "bac", "cba" "xyz"
/a./ 含字母 "a" 以及其後任一個字元的字串,例如 "ab", "bac"(若要比對.,請使用 \.) "a", "ba"
/^xy/ 以 "xy" 開始的字串,例如 "xyz", "xyab"(若要比對 ^,請使用 \^) "axy", "bxy"
/xy$/ 以 "xy" 結尾的字串,例如 "axy", "abxy"以 "xy" 結尾的字串,例如 "axy", "abxy" (若要比對 $,請使用 \$) "xya", "xyb"
/[13579]/ 包含 "1" 或 "3" 或 "5" 或 "7" 或 "9" 的字串,例如:"a3b", "1xy" "y2k"
/[0-9]/ 含數字之字串 不含數字之字串
/[a-z0-9]/ 含數字或小寫字母之字串 不含數字及小寫字母之字串
/[a-zA-Z0-9]/ 含數字或字母之字串 不含數字及字母之字串
/b[aeiou]t/ "bat", "bet", "bit", "bot", "but" "bxt", "bzt"
/[^0-9]/ 不含數字之字串(若要比對 ^,請使用 \^) 含數字之字串
/[^aeiouAEIOU]/ 不含母音之字串(若要比對 ^,請使用 \^) 含母音之字串
/[^\^]/ 不含 "^" 之字串,例如 "xyz", "abc" "xy^", "a^bc"

伏號說明
字元 說明 簡單範例
\ 避開特殊字元 /A\*/ 可用於比對 "A*",其中 * 是一個特殊字元,為避開其特殊意義,所以必須加上 "\"
^ 比對輸入列的起始位置 /^A/ 可比對 "Abcd" 中的 "A",但不可比對 "aAb"
$ 比對輸入列的結束位置 /A$/ 可比對 "bcdA" 中的 "A",但不可比對 "aAb"
* 比對前一個字元零次或更多次 /bo*/ 可比對 "Good boook" 中的 "booo",亦可比對 "Good bk" 中的 "b"
+ 比對前一個字元一次或更多次,等效於 {1,} /a+/ 可比對 "caaandy" 中的 "aaa",但不可比對 "cndy"
? 比對前一個字元零次或一次 /e?l/ 可比對 "angel" 中的 "el",也可以比對 "angle" 中的 "l"
. 比對任何一個字元(但換行符號不算) /.n/ 可比對 "nay, an apple is on the tree" 中的 "an" 和 "on",但不可比對 "nay"
(x) 比對 x 並將符合的部分存入一個變數 /(a*) and (b*)/ 可比對 "aaa and bb" 中的 "aaa" 和 "bb",並將這兩個比對得到的字串設定至變數 RegExp.$1 和 RegExp.$2。
xy 比對 x 或 y /a*b*/g 可比對 "aaa and bb" 中的 "aaa" 和 "bb"
{n} 比對前一個字元 n 次,n 為一個正整數 /a{3}/ 可比對 "lllaaalaa" 其中的 "aaa",但不可比對 "aa"
{n,} 比對前一個字元至少 n 次,n 為一個正整數 /a{3,}/ 可比對 "aa aaa aaaa" 其中的 "aaa" 及 "aaaa",但不可比對 "aa"
{n,m} 比對前一個字元至少 n 次,至多 m 次,m、n 均為正整數 /a{3,4}/ 可比對 "aa aaa aaaa aaaaa" 其中的 "aaa" 及 "aaaa",但不可比對 "aa" 及 "aaaaa"
[xyz] 比對中括弧內的任一個字元 /[ecm]/ 可比對 "welcome" 中的 "e" 或 "c" 或 "m"
[^xyz] 比對不在中括弧內出現的任一個字元 /[^ecm]/ 可比對 "welcome" 中的 "w"、"l"、"o",可見出其與 [xyz] 功能相反。(同時請同學也注意 /^/ 與 [^] 之間功能的不同。)
[\b] 比對退位字元(Backspace character) 可以比對一個 backspace ,也請注意 [\b] 與 \b 之間的差別
\b 比對英文字的邊界,例如空格 例如 /\bn\w/ 可以比對 "noonday" 中的 'no' ;

/\wy\b/ 可比對 "possibly yesterday." 中的 'ly'
\B 比對非「英文字的邊界」 例如, /\w\Bn/ 可以比對 "noonday" 中的 'on' ,

另外 /y\B\w/ 可以比對 "possibly yesterday." 中的 'ye'
\cX 比對控制字元(Control character),其中 X 是一個控制字元 /\cM/ 可以比對 一個字串中的 control-M
\d 比對任一個數字,等效於 [0-9] /[\d]/ 可比對 由 "0" 至 "9" 的任一數字 但其餘如字母等就不可比對
\D 比對任一個非數字,等效於 [^0-9] /[\D]/ 可比對 "w" "a"... 但不可比對如 "7" "1" 等數字
\f 比對 form-feed 若是在文字中有發生 "換頁" 的行為 則可以比對成功
\n 比對換行符號 若是在文字中有發生 "換行" 的行為 則可以比對成功
\r 比對 carriage return  
\s 比對任一個空白字元(White space character),等效於 [ \f\n\r\t\v] /\s\w*/ 可比對 "A b" 中的 "b"
\S 比對任一個非空白字元,等效於 [^ \f\n\r\t\v] /\S/\w* 可比對 "A b" 中的 "A"
\t 比對定位字元(Tab)  
\v 比對垂直定位字元(Vertical tab)  
\w 比對數字字母字元(Alphanumerical characters)或底線字母("_"),等效於 [A-Za-z0-9_] /\w/ 可比對 ".A _!9" 中的 "A"、"_"、"9"。
\W 比對非「數字字母字元或底線字母」,等效於 [^A-Za-z0-9_] /\W/ 可比對 ".A _!9" 中的 "."、" "、"!",可見其功能與 /\w/ 恰好相反。
\ooctal 比對八進位,其中octal是八進位數目 /\oocetal123/ 可比對 與 八進位的ASCII中 "123" 所相對應的字元值。
\xhex 比對十六進位,其中hex是十六進位數目 /\xhex38/ 可比對 與 16進位的ASCII中 "38" 所相對應的字元。

使用範例:

//禁止使用不含 英文 + 數字 + .-_()
//用於禁止使用中文 

str = "123.d" ;
reg = /[^a-zA-Z0-9\.\-_\(\)]/ ;
if (reg.test(str)) alert("禁止使用不含 英文 + 數字 + .-_()");

2011年4月7日 星期四

列出目錄檔案資料

使用 php 列出檔案資料 , 在使用 include 引用 php , 會 hidden 檔名會 bak 檔案 , 預設目錄為 列出include 子目錄底下檔案


function list_files($dir = "include/" ){
  if (is_dir($dir)) {
    if ($dir_list = opendir($dir)) {
      while (($file = readdir($dir_list)) !== false) {
       if($file != '.' && $file != '..' && !strpos( $file , "bak" ) ){
     include_once ( $dir . $file ) ;
    }
   }
   closedir($dir_list);
   }
  }
}
list_files();

2011年4月5日 星期二

jquery select 運用

對select 設定 id="val"
取值

$("#val").val();

取顯示值

$("#val option:selected").text();

PS : 單使用$("#val").text(); 會列出所有option值