|
|||||||||||||||||||||||||||||||||||||||||
|
ç®å½ å¨SQL è¯å¥ä¸ï¼è¡¨è¾¾å¼å¯ç¨äºä¸äºè¯¸å¦SELECTè¯å¥çORDER BY æHAVINGåå¥ãSELECTã DELETEæ UPDATEè¯å¥çWHERE å奿 SETè¯å¥ä¹ç±»çå°æ¹ãä½¿ç¨ææ¬å¼ãcolumnå¼ãNULLå¼ã彿°ã æä½ç¬¦æ¥ä¹¦å表达å¼ã æ¬ç« åè¿°äºå¯ç¨äºä¹¦åMySQL表达å¼ç彿°åæä½ç¬¦ã é¤éå¨ææ¡£ç¼å¶ä¸å¯¹ä¸ä¸ªå½æ°ææä½ç¬¦å¦ææå®çæ åµå¤ï¼ä¸ä¸ªå å«NULL ç表达å¼é常产çä¸ä¸ªNULL å¼ã 注éï¼ å¨é»è®¤ç¶æä¸, å¨å½æ°åç´§éå ¶åçæ¬å·ä¹é´ä¸å¾åå¨ç©ºæ ¼ãè¿è½å¸®å© MySQL åæç¨åºåºåä¸äºå彿°åç¸åç彿°è°ç¨ä»¥å表æåãä¸è¿ï¼å½æ°èªåéå¨å´å 许æç©ºæ ¼åºç°ã å¯ä»¥éè¿éæ©--sql-mode=IGNORE_SPACEæ¥æå¼MySQLæå¡å¨çæ¹æ³ä½¿æå¡å¨æ¥å彿°ååçç©ºæ ¼ã 个人客æ·ç«¯ç¨åºå¯éè¿éæ©mysql_real_connect()çCLIENT_IGNORE_SPACE å®ç°è¿ä¸ç¶æãå¨ä»¥ä¸ä¸¤ç§æ åµä¸ï¼ ææç彿°åé½æä¸ºä¿çåã请åè§5.3.2èï¼âSQLæå¡å¨æ¨¡å¼â. 为èçæ¶é´ï¼æ¬ç« ä¸å¯¹å¤§å¤æ°ä¾å使ç¨ç®åå½¢å¼å±ç¤ºäº mysql ç¨åºçè¾åºç»æã 对äºä»¥ä¸æ ¼å¼ç举ä¾å±ç¤ºï¼ mysql> SELECT MOD(29,9); +-----------+ | mod(29,9) | +-----------+ | 2 | +-----------+ 1 rows in set (0.00 ç§) 使ç¨å¦ä¸æ ¼å¼è¿è¡ä»£æ¿ï¼ mysql> SELECT MOD(29,9); -> 2 以ä¸å表æ¾ç¤ºäºæä½ç¬¦ä¼å 级çç±ä½å°é«ç顺åºãæåå¨åä¸è¡çæä½ç¬¦å ·æç¸åçä¼å 级ã := ||, OR, XOR &&, AND NOT BETWEEN, CASE, WHEN, THEN, ELSE =, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN | & <<, >> -, + *, /, DIV, %, MOD ^ - (ä¸å åå·), ~ (ä¸å æ¯ç¹å转) ! BINARY, COLLATE 注éï¼åå¦ HIGH_NOT_PRECEDENCE SQL 模å¼è¢«æ¿æ´»ï¼å NOT çä¼å 级å the ! æä½ç¬¦ç¸åã请åè§5.3.2èï¼âSQLæå¡å¨æ¨¡å¼âã
æ¯è¾è¿ç®äº§ççç»æä¸º1(TRUE)ã0 (FALSE)æ NULLãè¿äºè¿ç®å¯ç¨äºæ°åååç¬¦ä¸²ãæ ¹æ®éè¦ï¼å符串å¯èªå¨è½¬æ¢ä¸ºæ°åï¼èæ°åä¹å¯èªå¨è½¬æ¢ä¸ºåç¬¦ä¸²ã æ¬ç« ä¸çä¸äºå½æ° (å¦LEAST()åGREATEST()) çæå¾å¼ä¸å æ¬ 1 (TRUE)ã 0 (FALSE)å NULLãç¶èï¼å ¶æå¾å¼ä¹æ¯åºäºæç §ä¸è¿°è§åè¿è¡çæ¯è¾è¿ç®ï¼ MySQLæç §ä»¥ä¸è§åè¿è¡æ°å¼æ¯è¾ï¼
å¨é»è®¤ç¶æä¸ï¼å符串æ¯è¾ä¸åºå大å°åï¼å¹¶ä½¿ç¨ç°æå符é(é»è®¤ä¸ºcp1252 Latin1ï¼åæ¶å¯¹è±è¯ä¹éå)ã 为äºè¿è¡æ¯è¾ï¼å¯ä½¿ç¨CAST()彿°å°æä¸ªå¼è½¬ä¸ºå¦å¤ä¸ç§ç±»åã 使ç¨CONVERT()å°å符串å¼è½¬ä¸ºä¸åçå符éã请åè§12.8èï¼âCast彿°åæä½ç¬¦âã 以ä¸ä¾å说æäºæ¯è¾è¿ç®ä¸å°å符串转为æ°åçè¿ç¨ï¼ mysql> SELECT 1 > '6x'; -> 0 mysql> SELECT 7 > '6x'; -> 1 mysql> SELECT 0 > 'x6'; -> 0 mysql> SELECT 0 = 'x6'; -> 1 注æï¼å¨å°ä¸ä¸ªå符串ååä¸ä¸ªæ°åè¿è¡æ¯è¾æ¶ï¼ MySQL ä¸è½ä½¿ç¨åä¸çç´¢å¼è¿è¡å¿«éæ¥æ¾ãåå¦str_col æ¯ä¸ä¸ªç¼å ¥ç´¢å¼çå符串åï¼åå¨ä»¥ä¸è¯å¥ä¸ï¼ç´¢å¼ä¸è½æ§è¡æ¥æ¾åè½ï¼ SELECT * FROM tbl_name WHERE str_col=1; å ¶åå æ¯è®¸å¤ä¸åçå符串é½å¯è¢«è½¬æ¢ä¸ºæ°å¼ 1: '1'ã ' 1'ã '1a'ã â¦â¦
çäºï¼ mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
NULL-safe equal.è¿ä¸ªæä½ç¬¦å=æä½ç¬¦æ§è¡ç¸åçæ¯è¾æä½ï¼ä¸è¿å¨ä¸¤ä¸ªæä½ç å为NULLæ¶ï¼å ¶æå¾å¼ä¸º1èä¸ä¸ºNULLï¼èå½ä¸ä¸ªæä½ç 为NULLæ¶ï¼å ¶æå¾å¼ä¸º0èä¸ä¸ºNULLã mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
ä¸çäºï¼ mysql> SELECT '.01' <> '0.01'; -> 1 mysql> SELECT .01 <> '0.01'; -> 0 mysql> SELECT 'zapp' <> 'zappp'; -> 1
å°äºæçäºï¼ mysql> SELECT 0.1 <= 2; -> 1
å°äºï¼ mysql> SELECT 2 < 2; -> 0
å¤§äºæçäºï¼ mysql> SELECT 2 >= 2; -> 1
大äºï¼ mysql> SELECT 2 > 2; -> 0
æ ¹æ®ä¸ä¸ªå¸å°å¼æ¥æ£éªä¸ä¸ªå¼ï¼å¨è¿éï¼å¸å°å¼å¯ä»¥æ¯TRUEãFALSEæUNKNOWNã mysql> SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN; -> 1, 1, 1 mysql> SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN; -> 1, 1, 0
æ£éªä¸ä¸ªå¼æ¯å¦ä¸º NULLã mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL; -> 0, 0, 1 mysql> SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL; -> 1, 1, 0 为äºè½å¤é¡ºå©ç使ç¨ODBC ç¨åºå·¥ä½ï¼å¨ä½¿ç¨IS NULLæ¶ï¼MySQLæ¯æä¸ä¸é¢å¤ç¹æ§ï¼
o SELECT * FROM tbl_name WHERE auto_col IS NULL å½è®¾ç½®SQL_AUTO_IS_NULL=0æ¶ï¼è¿é¡¹æä½æ æ³è¿è¡ã请åè§13.5.3èï¼âSETè¯æ³âã
o SELECT * FROM tbl_name WHERE date_column IS NULL è¿è¡è¿ä¸æ¥éè¦ä½¿ç¨ä¸äº ODBC åºç¨è½¯ä»¶ï¼å 为 ODBCæ¬èº«ä¸æ¯æ ä¸ä¸ª '0000-00-00'çæ¶é´å¼ã
åå¦exprå¤§äºæçäº min ä¸expr å°äºæçäºmax, åBETWEEN çè¿åå¼ä¸º1,ææ¯0ãè¥ææåæ°é½æ¯åä¸ç±»åï¼åä¸è¿°å ³ç³»ç¸å½äºè¡¨è¾¾å¼ (min <= expr AND expr <= max)ãå ¶å®ç±»åçè½¬æ¢æ ¹æ®æ¬ç« å¼ç¯æè¿°è§å¾è¿è¡ï¼ä¸éç¨äº3ç§åæ°ä¸ä»»æä¸ç§ã mysql> SELECT 1 BETWEEN 2 AND 3; -> 0 mysql> SELECT 'b' BETWEEN 'a' AND 'c'; -> 1 mysql> SELECT 2 BETWEEN 2 AND '3'; -> 1 mysql> SELECT 2 BETWEEN 2 AND 'x-3'; -> 0
è¿ç¸å½äºNOT(expr BETWEEN min AND max)ã · COALESCE(value,...) è¿åå¼ä¸ºå表å½ä¸ç第ä¸ä¸ªé NULLå¼ï¼å¨æ²¡æéNULL å¼å¾æ åµä¸è¿åå¼ä¸º NULL ã mysql> SELECT COALESCE(NULL,1); -> 1 mysql> SELECT COALESCE(NULL,NULL,NULL); -> NULL · GREATEST(value1,value2,...) 彿2æå¤ä¸ªåæ°æ¶ï¼è¿åå¼ä¸ºæå¤§(æå¤§å¼ç)åæ°ãæ¯è¾åæ°æä¾æ®çè§å¾åLEAST()ç¸åã mysql> SELECT GREATEST(2,0); -> 2 mysql> SELECT GREATEST(34.0,3.0,5.0,767.0); -> 767.0 mysql> SELECT GREATEST('B','A','C'); -> 'C' 卿²¡æèªåé为NULLçæ åµä¸ï¼GREATEST()çè¿åå¼ä¸ºNULLã · expr IN (value,...)
mysql> SELECT 2 IN (0,3,5,'wefwf'); -> 0 mysql> SELECT 'wefwf' IN (0,3,5,'wefwf'); -> 1 IN åè¡¨ä¸æåå¼ç个æ°ä» åéäº max_allowed_packet å¼ã 为äºåSQL æ åç¸ä¸è´ï¼å¨å·¦ä¾§è¡¨è¾¾å¼ä¸ºNULLçæ åµä¸ï¼ææ¯è¡¨ä¸æ¾ä¸å°å¹é é¡¹ææ¯è¡¨ä¸ä¸ä¸ªè¡¨è¾¾å¼ä¸ºNULL çæ åµä¸ï¼INçè¿åå¼å为NULLã IN() è¯æä¹å¯ç¨ä¹¦åæäºç±»åçåæ¥è¯¢ã请åè§13.2.8.3èï¼â使ç¨ANYãINåSOMEè¿è¡åæ¥è¯¢âã · expr NOT IN (value,...) è¿ä¸NOT (expr IN (value,...))ç¸åã
å¦expr 为NULLï¼é£ä¹ISNULL() çè¿åå¼ä¸º 1ï¼å¦åè¿åå¼ä¸º 0ã mysql> SELECT ISNULL(1+1); -> 0 mysql> SELECT ISNULL(1/0); -> 1 使ç¨= çNULL å¼å¯¹æ¯é常æ¯é误çã ISNULL() 彿°å IS NULLæ¯è¾æä½ç¬¦å ·æä¸äºç¸åçç¹æ§ã请åè§æå ³IS NULL ç说æã · INTERVAL(N,N1,N2,N3,...) åå¦N < N1ï¼åè¿åå¼ä¸º0ï¼åå¦N < N2 ççï¼åè¿åå¼ä¸º1ï¼åå¦N 为NULLï¼åè¿åå¼ä¸º -1 ãææçåæ°åæç §æ´æ°å¤çã为äºè¿ä¸ªå½æ°çæ£ç¡®è¿è¡ï¼å¿ 须满足 N1 < N2 < N3 < â¦â¦< Nn ãå ¶åå æ¯ä½¿ç¨äºäºåæ¥æ¾(æå¿«é)ã mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200); -> 3 mysql> SELECT INTERVAL(10, 1, 10, 100, 1000); -> 2 mysql> SELECT INTERVAL(22, 23, 30, 44, 200); -> 0 · LEAST(value1,value2,...) å¨æä¸¤ä¸ªæå¤ä¸ªåæ°çæ åµä¸ï¼ è¿åå¼ä¸ºæå° (æå°å¼) åæ°ãç¨ä¸ä¸è§åå°èªåéè¿è¡å¯¹æ¯ï¼
åå¦ä»»æä¸ä¸ªèªåé为NULLï¼å LEAST()çè¿åå¼ä¸ºNULL ã mysql> SELECT LEAST(2,0); -> 0 mysql> SELECT LEAST(34.0,3.0,5.0,767.0); -> 3.0 mysql> SELECT LEAST('B','A','C'); -> 'A' 注æï¼ä¸é¢ç转æ¢è§åå¨ä¸äºè¾¹çæ å½¢ä¸ä¼äº§çä¸äºå¥ç¹çç»æï¼ mysql> SELECT CAST(LEAST(3600, 9223372036854775808.0) as SIGNED); -> -9223372036854775808 åçè¿ç§æ åµçåå æ¯MySQL卿´æ°è¯å¢ä¸è¯»å9223372036854775808.0ãæ´æ°è¡¨ç¤ºæ³ä¸å©äºä¿åæ°å¼ï¼å æ¤å®å æ¬ä¸ä¸ªå¸¦ç¬¦å·æ´æ°ã å¨SQLä¸ï¼ææé»è¾ æä½ç¬¦çæ±å¼æå¾ç»æå为 TRUEãFALSEæ NULL (UNKNOWN)ãå¨ MySQLä¸ï¼å®ä»¬ä½ç°ä¸º 1 (TRUE)ã 0 (FALSE)å NULLãå ¶å¤§å¤æ°é½ä¸ä¸åçæ°æ®åºSQLéç¨ï¼ç¶èä¸äºæå¡å¨å¯¹TRUEçè¿åå¼å¯è½æ¯ä»»æä¸ä¸ªéé¶å¼ã
é»è¾ NOTã彿使°ä¸º0 æ¶ï¼æå¾å¼ä¸º 1 ï¼å½æä½æ°ä¸ºéé¶å¼æ¶ï¼æå¾å¼ä¸º 0 ï¼è彿使°ä¸ºNOT NULLæ¶ï¼æå¾çè¿åå¼ä¸º NULLã mysql> SELECT NOT 10; -> 0 mysql> SELECT NOT 0; -> 1 mysql> SELECT NOT NULL; -> NULL mysql> SELECT ! (1+1); -> 0 mysql> SELECT ! 1+1; -> 1 æåä¸ä¸ªä¾å产ççç»æä¸º 1ï¼åå æ¯è¡¨è¾¾å¼çè®¡ç®æ¹å¼å(!1)+1ç¸åã
é»è¾ANDã彿ææä½æ°å为éé¶å¼ãå¹¶ä¸ä¸ä¸ºNULLæ¶ï¼è®¡ç®æå¾ç»æä¸º 1 ï¼å½ä¸ä¸ªæå¤ä¸ªæä½æ°ä¸º0 æ¶ï¼æå¾ç»æä¸º 0 ï¼å ¶ä½æ åµè¿åå¼ä¸º NULL ã mysql> SELECT 1 && 1; -> 1 mysql> SELECT 1 && 0; -> 0 mysql> SELECT 1 && NULL; -> NULL mysql> SELECT 0 && NULL; -> 0 mysql> SELECT NULL && 0; -> 0
é»è¾ ORãå½ä¸¤ä¸ªæä½æ°å为é NULL弿¶ï¼å¦æä»»æä¸ä¸ªæä½æ°ä¸ºéé¶å¼ï¼åç»æä¸º1ï¼å¦åç»æä¸º0ã彿ä¸ä¸ªæä½æ°ä¸ºNULLæ¶ï¼å¦å¦ä¸ä¸ªæä½æ°ä¸ºéé¶å¼ï¼åç»æä¸º1ï¼å¦åç»æä¸º NULL ãåå¦ä¸¤ä¸ªæä½æ°å为 NULLï¼åæå¾ç»æä¸º NULLã mysql> SELECT 1 || 1; -> 1 mysql> SELECT 1 || 0; -> 1 mysql> SELECT 0 || 0; -> 0 mysql> SELECT 0 || NULL; -> NULL mysql> SELECT 1 || NULL; -> 1
é»è¾XORãå½ä»»æä¸ä¸ªæä½æ°ä¸º NULLæ¶ï¼è¿åå¼ä¸ºNULLã对äºé NULL çæä½æ°ï¼åå¦ä¸ä¸ªå¥æ°æä½æ°ä¸ºéé¶å¼ï¼åè®¡ç®æå¾ç»æä¸º 1 ï¼å¦å为 0 ã mysql> SELECT 1 XOR 1; -> 0 mysql> SELECT 1 XOR 0; -> 1 mysql> SELECT 1 XOR NULL; -> NULL mysql> SELECT 1 XOR 1 XOR 1; -> 1 a XOR b ç计ç®çåäº (a AND (NOT b)) OR ((NOT a)å b)ã åæ ·è§ 12.1.1èï¼âæä½ç¬¦ä¼å 级âã 12.2. æ§å¶æµç¨å½æ°
å¨ç¬¬ä¸ä¸ªæ¹æ¡çè¿åç»æä¸ï¼ value=compare-valueãè第äºä¸ªæ¹æ¡çè¿åç»ææ¯ç¬¬ä¸ç§æ åµççå®ç»æãå¦ææ²¡æå¹é çç»æå¼ï¼åè¿åç»æä¸ºELSEåçç»æï¼å¦ææ²¡æELSE é¨åï¼åè¿åå¼ä¸º NULLã mysql> SELECT CASE 1 WHEN 1 THEN 'one' -> WHEN 2 THEN 'two' ELSE 'more' END; -> 'one' mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END; -> 'true' mysql> SELECT CASE BINARY 'B' -> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END; -> NULL ä¸ä¸ªCASE表达å¼çé»è®¤è¿åå¼ç±»åæ¯ä»»ä½è¿åå¼çç¸å®¹éåç±»åï¼ä½å ·ä½æ åµè§å ¶æå¨è¯å¢èå®ã妿ç¨å¨å符串è¯å¢ä¸ï¼åè¿åç»æå³å符串ã妿ç¨å¨æ°åè¯å¢ä¸ï¼åè¿åç»æä¸ºåè¿å¶å¼ãå®å¼ææ´æ°å¼ã
妿 expr1 æ¯TRUE (expr1 <> 0 and expr1 <> NULL)ï¼å IF()çè¿åå¼ä¸ºexpr2; å¦åè¿åå¼å为 expr3ãIF() çè¿åå¼ä¸ºæ°å弿å符串å¼ï¼å ·ä½æ åµè§å ¶æå¨è¯å¢èå®ã mysql> SELECT IF(1>2,2,3); -> 3 mysql> SELECT IF(1<2,'yes ','no'); -> 'yes' mysql> SELECT IF(STRCMP('test','test1'),'no','yes'); -> 'no' 妿expr2 æexpr3ä¸åªæä¸ä¸ªæç¡®æ¯ NULLï¼åIF() 彿°çç»æç±»å 为éNULL表达å¼çç»æç±»åã expr1 ä½ä¸ºä¸ä¸ªæ´æ°å¼è¿è¡è®¡ç®ï¼å°±æ¯è¯´ï¼åå¦ä½ æ£å¨éªè¯æµ®ç¹å¼æå符串å¼ï¼ é£ä¹åºè¯¥ä½¿ç¨æ¯è¾è¿ç®è¿è¡æ£éªã mysql> SELECT IF(0.1,1,0); -> 0 mysql> SELECT IF(0.1<>0,1,0); -> 1 å¨æç¤ºç第ä¸ä¸ªä¾åä¸ï¼IF(0.1)çè¿åå¼ä¸º0ï¼åå æ¯ 0.1 被转åä¸ºæ´æ°å¼ï¼ä»èå¼èµ·ä¸ä¸ªå¯¹ IF(0)çæ£éªãè¿æè®¸ä¸æ¯ä½ æ³è¦çæ åµãå¨ç¬¬äºä¸ªä¾åä¸ï¼æ¯è¾æ£éªäºåå§æµ®ç¹å¼ï¼ç®çæ¯ä¸ºäºäºè§£æ¯å¦å ¶ä¸ºéé¶å¼ãæ¯è¾ç»æä½¿ç¨æ´æ°ã IF() (è¿ä¸ç¹å¨å ¶è¢«å¨åå°ä¸´æ¶è¡¨æ¶å¾éè¦ ) çé»è®¤è¿åå¼ç±»åæç §ä»¥ä¸æ¹å¼è®¡ç®ï¼
åå¦expr2 åexpr3 齿¯å符串ï¼ä¸å ¶ä¸ä»»ä½ä¸ä¸ªå符串åºå大å°åï¼åè¿åç»ææ¯åºå大å°åã
åå¦expr1 ä¸ä¸º NULLï¼å IFNULL() çè¿åå¼ä¸º expr1; å¦åå ¶è¿åå¼ä¸º expr2ãIFNULL()çè¿å弿¯æ°åææ¯å符串ï¼å ·ä½æ åµåå³äºå ¶æä½¿ç¨çè¯å¢ã mysql> SELECT IFNULL(1,0); -> 1 mysql> SELECT IFNULL(NULL,10); -> 10 mysql> SELECT IFNULL(1/0,10); -> 10 mysql> SELECT IFNULL(1/0,'yes'); -> 'yes' IFNULL(expr1,expr2)çé»è®¤ç»æå¼ä¸ºä¸¤ä¸ªè¡¨è¾¾å¼ä¸æ´å âéç¨âçä¸ä¸ªï¼é¡ºåºä¸ºSTRINGã REALæ INTEGERãå设ä¸ä¸ªåºäºè¡¨è¾¾å¼çè¡¨çæ åµï¼ æMySQLå¿ é¡»å¨å åå¨å¨ä¸å¨åä¸ä¸ªä¸´æ¶è¡¨ä¸IFNULL()çè¿åå¼ï¼ CREATE TABLE tmp SELECT IFNULL(1,'test') AS testï¼ å¨è¿ä¸ªä¾åä¸ï¼æµè¯åçç±»å为 CHAR(4)ã
妿expr1 = expr2 æç«ï¼é£ä¹è¿åå¼ä¸ºNULLï¼å¦åè¿åå¼ä¸º expr1ãè¿åCASE WHEN expr1 = expr2 THEN NULL ELSE expr1 ENDç¸åã mysql> SELECT NULLIF(1,1); -> NULL mysql> SELECT NULLIF(1,2); -> 1 注æï¼å¦æåæ°ä¸ç¸çï¼å MySQL 两次æ±å¾çå¼ä¸º expr1 ã åå¦ç»æçé¿åº¦å¤§äº max_allowed_packet ç³»ç»åéçæå¤§å¼æ¶ï¼å符串å¼å½æ°çè¿åå¼ä¸ºNULLã请åè§7.5.2èï¼âè°èæå¡å¨åæ°âã 对äºå¨å符串ä½ç½®æä½ç彿°ï¼ç¬¬ä¸ä¸ªä½ç½®çç¼å·ä¸º 1ã
è¿åå¼ä¸ºå符串str çæå·¦åç¬¦çæ°å¼ãåå¦str为空å符串ï¼åè¿åå¼ä¸º 0 ãåå¦str 为NULLï¼åè¿åå¼ä¸º NULLã ASCII()ç¨äºå¸¦æä» 0å°255çæ°å¼çå符ã mysql> SELECT ASCII('2'); -> 50 mysql> SELECT ASCII(2); -> 50 mysql> SELECT ASCII('dx'); -> 100 è§ ORD()彿°ã
è¿åå¼ä¸ºNçäºè¿å¶å¼çå符串表示ï¼å ¶ä¸ N 为ä¸ä¸ªlonglong (BIGINT) æ°åãè¿çåäº CONV(N,10,2)ãåå¦N 为NULLï¼åè¿åå¼ä¸º NULLã mysql> SELECT BIN(12); -> '1100'
è¿åå¼ä¸ºäºè¿å¶çå符串str é¿åº¦ã mysql> SELECT BIT_LENGTH('text'); -> 32
CHAR()å°æ¯ä¸ªåæ°Nç解为ä¸ä¸ªæ´æ°ï¼å ¶è¿åå¼ä¸ºä¸ä¸ªå å«è¿äºæ´æ°ç代ç 弿ç»åºçå符çå符串ãNULLå¼è¢«çç¥ã mysql> SELECT CHAR(77,121,83,81,'76'); -> 'MySQL' mysql> SELECT CHAR(77,77.3,'77.3'); -> 'MMM' å¤§äº 255çCHAR()åæ°è¢«è½¬æ¢ä¸ºå¤ç»æå符ã ä¾å¦ï¼CHAR(256) ç¸å½äº CHAR(1,0), èCHAR(256*256) åç¸å½äº CHAR(1,0,0)ï¼ mysql> SELECT HEX(CHAR(1,0)), HEX(CHAR(256)); +----------------+----------------+ | HEX(CHAR(1,0)) | HEX(CHAR(256)) | +----------------+----------------+ | 0100 | 0100 | +----------------+----------------+ mysql> SELECT HEX(CHAR(1,0,0)), HEX(CHAR(256*256)); +------------------+--------------------+ | HEX(CHAR(1,0,0)) | HEX(CHAR(256*256)) | +------------------+--------------------+ | 010000 | 010000 | +------------------+--------------------+ CHAR()çè¿åå¼ä¸ºä¸ä¸ªäºè¿å¶å符串ãå¯éæ©ä½¿ç¨USINGè¯å¥äº§çä¸ä¸ªç»åºçå符éä¸çåç¬¦ä¸²ï¼ mysql> SELECT CHARSET(CHAR(0x65)), CHARSET(CHAR(0x65 USING utf8)); mysql> SELECT CHARSET(CHAR(0x65)), CHARSET(CHAR(0x65 USING utf8)); +---------------------+--------------------------------+
| CHARSET(CHAR(0x65)) | CHARSET(CHAR(0x65 USING utf8)) |
+---------------------+--------------------------------+
| binary | utf8 |
+---------------------+--------------------------------+妿 USINGå·²ç»äº§çï¼èç»æå符串ä¸ç¬¦åç»åºçå符éï¼åä¼ååºè¦åã åæ ·ï¼å¦æä¸¥æ ¼çSQL模å¼è¢«æ¿æ´»ï¼åCHAR()çç»æä¼æä¸º NULLã
è¿åå¼ä¸ºå符串str çé¿åº¦ï¼é¿åº¦çåä½ä¸ºå符ãä¸ä¸ªå¤åèå符ç®ä½ä¸ä¸ªåå符ã对äºä¸ä¸ªå å«äºä¸ªäºåèå符é, LENGTH()è¿åå¼ä¸º 10, èCHAR_LENGTH()çè¿åå¼ä¸º5ã
CHARACTER_LENGTH()æ¯CHAR_LENGTH()çåä¹è¯ã
å缩ä¸ä¸ªå符串ãè¿ä¸ªå½æ°è¦æ± MySQLå·²ç»ç¨ä¸ä¸ªè¯¸å¦zlibçå缩åºå缩è¿ã å¦åï¼è¿åå¼å§ç»æ¯NULLãUNCOMPRESS() å¯å°å缩è¿çå符串è¿è¡è§£å缩ã mysql> SELECT LENGTH(COMPRESS(REPEAT('a',1000))); -> 21 mysql> SELECT LENGTH(COMPRESS('')); -> 0 mysql> SELECT LENGTH(COMPRESS('a')); -> 13 mysql> SELECT LENGTH(COMPRESS(REPEAT('a',16))); -> 15 å缩åçå符串çå 容æç §ä»¥ä¸æ¹å¼åå¨ï¼
è¿åç»æä¸ºè¿æ¥åæ°äº§ççå符串ã妿任ä½ä¸ä¸ªåæ°ä¸ºNULL ï¼åè¿åå¼ä¸º NULLãæè®¸æä¸ä¸ªæå¤ä¸ªåæ°ã 妿ææåæ°å为éäºè¿å¶å符串ï¼åç»æä¸ºéäºè¿å¶å符串ã 妿èªåéä¸å«æä»»ä¸äºè¿å¶å符串ï¼åç»æä¸ºä¸ä¸ªäºè¿å¶å符串ãä¸ä¸ªæ°ååæ°è¢«è½¬å为ä¸ä¹ç¸ççäºè¿å¶åç¬¦ä¸²æ ¼å¼ï¼è¥è¦é¿å è¿ç§æ åµï¼å¯ä½¿ç¨æ¾å¼ç±»å cast, ä¾å¦ï¼ SELECT CONCAT(CAST(int_col AS CHAR), char_col) mysql> SELECT CONCAT('My', 'S', 'QL'); -> 'MySQL' mysql> SELECT CONCAT('My', NULL, 'QL'); -> NULL mysql> SELECT CONCAT(14.3); -> '14.3'
CONCAT_WS() 代表 CONCAT With Separator ï¼æ¯CONCAT()çç¹æ®å½¢å¼ã 第ä¸ä¸ªåæ°æ¯å ¶å®åæ°çåé符ãåé符çä½ç½®æ¾å¨è¦è¿æ¥ç两个å符串ä¹é´ãåé符å¯ä»¥æ¯ä¸ä¸ªå符串ï¼ä¹å¯ä»¥æ¯å ¶å®åæ°ã妿åé符为 NULLï¼åç»æä¸º NULLã彿°ä¼å¿½ç¥ä»»ä½åéç¬¦åæ°åç NULL å¼ã mysql> SELECT CONCAT_WS(',','First name','Second name','Last Name'); -> 'First name,Second name,Last Name' mysql> SELECT CONCAT_WS(',','First name',NULL,'Last Name'); -> 'First name,Last Name' CONCAT_WS()ä¸ä¼å¿½ç¥ä»»ä½ç©ºå符串ã (ç¶èä¼å¿½ç¥ææç NULLï¼ã
ä¸åæ°åºé´è½¬æ¢æ°åãè¿åå¼ä¸ºæ°åçNå符串表示ï¼ç±from_baseåºè½¬å为 to_base åºã妿任æä¸ä¸ªåæ°ä¸ºNULLï¼åè¿åå¼ä¸º NULLãèªåé N 被ç解为ä¸ä¸ªæ´æ°ï¼ä½æ¯å¯ä»¥è¢«æå®ä¸ºä¸ä¸ªæ´æ°æå符串ãæå°åºæ°ä¸º 2 ï¼èæå¤§åºæ°å为 36ã If to_base æ¯ä¸ä¸ªè´æ°ï¼å N 被çä½ä¸ä¸ªå¸¦ç¬¦å·æ°ãå¦åï¼ N 被ç使 ç¬¦å·æ°ã CONV() çè¿è¡ç²¾ç¡®åº¦ä¸º 64æ¯ç¹ã mysql> SELECT CONV('a',16,2); -> '1010' mysql> SELECT CONV('6E',18,8); -> '172' mysql> SELECT CONV(-17,10,-18); -> '-H' mysql> SELECT CONV(10+'10'+'10'+0xa,10,10); -> '40'
è¥N = 1ï¼åè¿åå¼ä¸º str1 ï¼è¥N = 2ï¼åè¿åå¼ä¸º str2 ï¼ä»¥æ¤ç±»æ¨ã è¥N å°äº1æå¤§äºåæ°çæ°ç®ï¼åè¿åå¼ä¸º NULL ã ELT() æ¯ FIELD()çè¡¥æ°ã mysql> SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo'); -> 'ej' mysql> SELECT ELT(4, 'ej', 'Heja', 'hej', 'foo'); -> 'foo'
è¿åå¼ä¸ºä¸ä¸ªå符串ï¼å ¶ä¸å¯¹äºbitså¼ä¸çæ¯ä¸ªä½ç»ï¼å¯ä»¥å¾å°ä¸ä¸ª on å符串ï¼èå¯¹äºæ¯ä¸ªæ¸ é¶æ¯ç¹ä½ï¼å¯ä»¥å¾å°ä¸ä¸ªoff å符串ãbits ä¸çæ¯ç¹å¼æç §ä»å³å°å·¦çé¡ºåºæ¥åæ£éª (ç±ä½ä½æ¯ç¹å°é«ä½æ¯ç¹)ãå符串被åéå符串åå¼(é»è®¤ä¸ºéå·â,â)ï¼æç §ä»å·¦å°å³ç顺åºè¢«æ·»å å°ç»æä¸ãnumber_of_bits ä¼ç»åºè¢«æ£éªçäºè¿å¶ä½æ° (é»è®¤ä¸º 64)ã mysql> SELECT EXPORT_SET(5,'Y','N',',',4); -> 'Y,N,Y,N' mysql> SELECT EXPORT_SET(6,'1','0',',',10); -> '0,1,1,0,0,0,0,0,0,0'
è¿åå¼ä¸ºstr1, str2, str3,â¦â¦å表ä¸çstr ææ°ã卿¾ä¸å°str çæ åµä¸ï¼è¿åå¼ä¸º 0 ã 妿ææå¯¹äºFIELD() çåæ°å为å符串ï¼åææåæ°åæç §å符串è¿è¡æ¯è¾ã妿ææçåæ°å为æ°åï¼åæç §æ°åè¿è¡æ¯è¾ãå¦åï¼åæ°æç §ååè¿è¡æ¯è¾ã 妿str 为NULLï¼åè¿åå¼ä¸º0 ï¼åå æ¯NULLä¸è½åä»»ä½å¼è¿è¡åçæ¯è¾ãFIELD() æ¯ELT()çè¡¥æ°ã mysql> SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo'); -> 2 mysql> SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo'); -> 0
åå¦å符串str å¨ç±N åé¾ç»æçå符串å表strlist ä¸ï¼ åè¿åå¼çèå´å¨ 1 å° N ä¹é´ ãä¸ä¸ªå符串å表就æ¯ä¸ä¸ªç±ä¸äºè¢«â,â符å·åå¼çèªé¾ç»æçå符串ãå¦æç¬¬ä¸ä¸ªåæ°æ¯ä¸ä¸ªå¸¸æ°å符串ï¼è第äºä¸ªæ¯type SETåï¼å FIND_IN_SET() 彿°è¢«ä¼åï¼ä½¿ç¨æ¯ç¹è®¡ç®ã妿strä¸å¨strlist æstrlist 为空å符串ï¼åè¿åå¼ä¸º 0 ãå¦ä»»æä¸ä¸ªåæ°ä¸ºNULLï¼åè¿åå¼ä¸º NULLã è¿ä¸ªå½æ°å¨ç¬¬ä¸ä¸ªåæ°å å«ä¸ä¸ªéå·(â,â)æ¶å°æ æ³æ£å¸¸è¿è¡ã mysql> SELECT FIND_IN_SET('b','a,b,c,d'); -> 2
å°number Xè®¾ç½®ä¸ºæ ¼å¼ '#,###,###.##', 以åèäºå ¥çæ¹å¼ä¿çå°å°æ°ç¹åDä½, èè¿åç»æä¸ºä¸ä¸ªå符串ã详è§12.9.4èï¼âå ¶ä»å½æ°â.
妿N_OR_S æ¯ä¸ä¸ªæ°åï¼åè¿åä¸ä¸ª åå è¿å¶å¼ N çå符串表示ï¼å¨è¿éï¼ N æ¯ä¸ä¸ªlonglong (BIGINT)æ°ãè¿ç¸å½äº CONV(N,10,16)ã 妿N_OR_S æ¯ä¸ä¸ªå符串ï¼åè¿åå¼ä¸ºä¸ä¸ªN_OR_Sçåå è¿å¶åç¬¦ä¸²è¡¨ç¤ºï¼ å ¶ä¸æ¯ä¸ªN_OR_S éçæ¯ä¸ªå符被转å为两个åå è¿å¶æ°åã mysql> SELECT HEX(255); -> 'FF' mysql> SELECT 0x616263; -> 'abc' mysql> SELECT HEX('abc'); -> 616263
è¿åå符串 str, å ¶åå符串起å§äº pos ä½ç½®åé¿æè¢«å符串 newstrå代çlen å符ã 妿pos è¶ è¿å符串é¿åº¦ï¼åè¿åå¼ä¸ºåå§å符串ã åå¦lençé¿åº¦å¤§äºå ¶å®å符串çé¿åº¦ï¼åä»ä½ç½®poså¼å§æ¿æ¢ãè¥ä»»ä½ä¸ä¸ªåæ°ä¸ºnullï¼åè¿åå¼ä¸ºNULLã mysql> SELECT INSERT('Quadratic', 3, 4, 'What'); -> 'QuWhattic' mysql> SELECT INSERT('Quadratic', -1, 4, 'What'); -> 'Quadratic' mysql> SELECT INSERT('Quadratic', 3, 100, 'What'); -> 'QuWhat' è¿ä¸ªå½æ°æ¯æå¤åèåå ã
è¿åå符串 str ä¸åå符串ç第ä¸ä¸ªåºç°ä½ç½®ãè¿åLOCATE()çååæ°å½¢å¼ç¸åï¼é¤éåæ°ç顺åºè¢«é¢ åã mysql> SELECT INSTR('foobarbar', 'bar'); -> 4 mysql> SELECT INSTR('xbar', 'foobar'); -> 0 è¿ä¸ªå½æ°æ¯æå¤åèåå ï¼å¹¶ä¸åªæå½è³å°æä¸ä¸ªåæ°æ¯äºè¿å¶å符串æ¶åºå大å°åã
LCASE() æ¯ LOWER()çåä¹è¯ã
è¿åä»å符串str å¼å§çlen æå·¦å符ã mysql> SELECT LEFT('foobarbar', 5); -> 'fooba'
è¿åå¼ä¸ºå符串str çé¿åº¦ï¼åä½ä¸ºåèãä¸ä¸ªå¤åèå符ç®ä½å¤åèãè¿æå³ç 对äºä¸ä¸ªå å«5个2åèå符çåç¬¦ä¸²ï¼ LENGTH() çè¿åå¼ä¸º 10, è CHAR_LENGTH()çè¿åå¼å为5ã mysql> SELECT LENGTH('text'); -> 4
读åæä»¶å¹¶å°è¿ä¸æä»¶æç §åç¬¦ä¸²çæ ¼å¼è¿åã æä»¶çä½ç½®å¿ 须卿å¡å¨ä¸,ä½ å¿ é¡»ä¸ºæä»¶å¶å®è·¯å¾å ¨åï¼èä¸ä½ è¿å¿ é¡»æ¥æFILE ç¹è®¸æãæä»¶å¿ é¡»å¯è¯»åï¼æä»¶å®¹éå¿ é¡»å°äº max_allowed_packetåèã è¥æä»¶ä¸åå¨ï¼æå 䏿»¡è¶³ä¸è¿°æ¡ä»¶èä¸è½è¢«è¯»åï¼ å彿°è¿åå¼ä¸º NULLã mysql> UPDATE tbl_name SET blob_column=LOAD_FILE('/tmp/picture') WHERE id=1;
第ä¸ä¸ªè¯æ³è¿åå符串 strä¸åå符串substrç第ä¸ä¸ªåºç°ä½ç½®ã第äºä¸ªè¯æ³è¿åå符串 strä¸åå符串substrç第ä¸ä¸ªåºç°ä½ç½®, èµ·å§ä½ç½®å¨posãå¦è¥substr ä¸å¨strä¸ï¼åè¿åå¼ä¸º0ã mysql> SELECT LOCATE('bar', 'foobarbar'); -> 4 mysql> SELECT LOCATE('xbar', 'foobar'); -> 0 mysql> SELECT LOCATE('bar', 'foobarbar',5); -> 7 è¿ä¸ªå½æ°æ¯æå¤åèåå ï¼å¹¶ä¸åªæå½è³å°æä¸ä¸ªåæ°æ¯äºè¿å¶å符串æ¶åºå大å°åã
è¿åå符串 str ä»¥åæææ ¹æ®ææ°çåç¬¦éæ å°è¡¨å为å°å忝çå符 (é»è®¤ä¸º cp1252 Latin1)ã mysql> SELECT LOWER('QUADRATICALLY'); -> 'quadratically' è¿ä¸ªå½æ°æ¯æå¤åèåå ã
è¿åå符串 str, å ¶å·¦è¾¹ç±å符串padstr å¡«è¡¥å°len å符é¿åº¦ãåå¦str çé¿åº¦å¤§äºlen, åè¿åå¼è¢«ç¼©çè³ len å符ã mysql> SELECT LPAD('hi',4,'??'); -> '??hi' mysql> SELECT LPAD('hi',1,'??'); -> 'h'
è¿åå符串 str ï¼å ¶å¼å¯¼ç©ºæ ¼å符被å é¤ã mysql> SELECT LTRIM(' barbar'); -> 'barbar' è¿ä¸ªå½æ°æ¯æå¤åèåå ã
è¿åä¸ä¸ªè®¾å®å¼ (ä¸ä¸ªå å«è¢«â,âå·åå¼çåå符串çå符串) ï¼ç±å¨bits ç»ä¸å ·æç¸åºçæ¯ç¹çåç¬¦ä¸²ç»æãstr1 å¯¹åºæ¯ç¹ 0, str2 å¯¹åºæ¯ç¹1,以æ¤ç±»æ¨ãstr1, str2, ...ä¸ç NULLå¼ä¸ä¼è¢«æ·»å å°ç»æä¸ã mysql> SELECT MAKE_SET(1,'a','b','c'); -> 'a' mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world'); -> 'hello,world' mysql> SELECT MAKE_SET(1 | 4,'hello','nice',NULL,'world'); -> 'hello' mysql> SELECT MAKE_SET(0,'a','b','c'); -> ''
MID(str,pos,len) æ¯ SUBSTRING(str,pos,len)çåä¹è¯ã
è¿åä¸ä¸ª Nçå «è¿å¶å¼çå符串表示ï¼å ¶ä¸ N æ¯ä¸ä¸ªlonglong (BIGINT)æ°ãè¿çåäºCONV(N,10,8)ãè¥N 为 NULL ï¼åè¿åå¼ä¸ºNULLã mysql> SELECT OCT(12); -> '14'
OCTET_LENGTH() æ¯ LENGTH()çåä¹è¯ã
è¥å符串str çæå·¦å符æ¯ä¸ä¸ªå¤åèå符ï¼åè¿å该å符ç代ç ï¼ ä»£ç ç计ç®éè¿ä½¿ç¨ä»¥ä¸å ¬å¼è®¡ç®å ¶ç»æåèçæ°å¼èå¾åº: (1st byte code)
+ (2nd byte code × 256) + (3rd byte code × 2562) ...
å妿左åç¬¦ä¸æ¯ä¸ä¸ªå¤åèå符ï¼é£ä¹ ORD()å彿°ASCII()è¿åç¸åçå¼ã mysql> SELECT ORD('2'); -> 50
POSITION(substr IN str)æ¯ LOCATE(substr,str)åä¹è¯ã
å¼è¯ä¸ä¸ªå符串ï¼ç±æ¤äº§çä¸ä¸ªå¨SQLè¯å¥ä¸å¯ç¨ä½å®å ¨è½¬ä¹æ°æ®å¼çç»æã è¿åçå符串ç±åå¼å·æ æ³¨ï¼æ¯ä¾é½å¸¦æåå¼å· (â'â)ã åæçº¿ç¬¦å· (â\â)ã ASCII NUL以åå颿åæçº¿ç¬¦å·çControl-Z ã妿èªåéçå¼ä¸ºNULL, åè¿åä¸å¸¦åå¼å·çåè¯ âNULLâã mysql> SELECT QUOTE('Don\'t!'); -> 'Don\'t!' mysql> SELECT QUOTE(NULL); -> NULL
è¿åä¸ä¸ªç±éå¤çå符串str ç»æçå符串ï¼å符串strçæ°ç®çäºcount ã è¥ count <= 0,åè¿åä¸ä¸ªç©ºå符串ãè¥str æ count 为 NULLï¼åè¿å NULL ã mysql> SELECT REPEAT('MySQL', 3); -> 'MySQLMySQLMySQL'
è¿åå符串str ä»¥åææè¢«å符串to_stræ¿ä»£çå符串from_str ã mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww'); -> 'WwWwWw.mysql.com' è¿ä¸ªå½æ°æ¯æå¤åèåå ã
è¿åå符串 str ï¼é¡ºåºåå符顺åºç¸åã mysql> SELECT REVERSE('abc'); -> 'cba' è¿ä¸ªå½æ°æ¯æå¤åèåå ã
ä»å符串str å¼å§ï¼è¿åæå³len å符ã mysql> SELECT RIGHT('foobarbar', 4); -> 'rbar' è¿ä¸ªå½æ°æ¯æå¤åèåå ã
è¿åå符串str, å ¶å³è¾¹è¢«å符串 padstrå¡«è¡¥è³len å符é¿åº¦ãåå¦å符串str çé¿åº¦å¤§äº len,åè¿åå¼è¢«ç¼©çå°ä¸ len å符ç¸åé¿åº¦ã mysql> SELECT RPAD('hi',5,'?'); -> 'hi???' mysql> SELECT RPAD('hi',1,'?'); -> 'h' è¿ä¸ªå½æ°æ¯æå¤åèåå ã
è¿åå符串 str ï¼ç»å°¾ç©ºæ ¼å符被å å»ã mysql> SELECT RTRIM('barbar '); -> 'barbar' è¿ä¸ªå½æ°æ¯æå¤åèåå ã
ä»strè¿åä¸ä¸ªsoundexå符串ã ä¸¤ä¸ªå ·æå ä¹åæ ·æ¢æµçå符串åºè¯¥å ·æåæ ·ç soundex å符串ãä¸ä¸ªæ åçsoundex å符串çé¿åº¦ä¸º4个å符ï¼ç¶èSOUNDEX() 彿°ä¼è¿åä¸ä¸ªäººä»¥é¿åº¦çå符串ã å¯ä½¿ç¨ç»æä¸çSUBSTRING() æ¥å¾å°ä¸ä¸ªæ å soundex å符串ãå¨strä¸ï¼ä¼å¿½ç¥æææªæç §åæ¯é¡ºåºæåçåç¬¦ã ææä¸å¨A-Zèå´ä¹å çå½é åæ¯ç¬¦å·è¢«è§ä¸ºå é³åæ¯ã mysql> SELECT SOUNDEX('Hello'); -> 'H400' mysql> SELECT SOUNDEX('Quadratically'); -> 'Q36324' 注æï¼è¿ä¸ªå½æ°æ§è¡åå§çSoundexç®æ³ï¼èéæ´å æµè¡çå å¼ºçæ¬(å¦D. Knuthæè¿°)ãå ¶åºå«å¨äºåå§çæ¬é¦å ä¼å å»å é³ï¼å ¶æ¬¡æ¯éå¤ï¼èå 强çåé¦å å å»éå¤ï¼èåå å»å é³ã
è¿ç¸å½äºSOUNDEX(expr1) = SOUNDEX(expr2)ã
è¿åä¸ä¸ªç±N é´é符å·ç»æçå符串ã mysql> SELECT SPACE(6); -> ' '
ä¸å¸¦ælen åæ°çæ ¼å¼ä»å符串strè¿åä¸ä¸ªåå符串ï¼èµ·å§äºä½ç½® posã带ælenåæ°çæ ¼å¼ä»å符串strè¿åä¸ä¸ªé¿åº¦ålenå符ç¸åçåå符串ï¼èµ·å§äºä½ç½® posã ä½¿ç¨ FROMçæ ¼å¼ä¸ºæ å SQL è¯æ³ãä¹å¯è½å¯¹pos使ç¨ä¸ä¸ªè´å¼ãåè¥è¿æ ·ï¼ååå符串çä½ç½®èµ·å§äºå符串ç»å°¾çpos å符ï¼è䏿¯å符串çå¼å¤´ä½ç½®ãå¨ä»¥ä¸æ ¼å¼ç彿°ä¸å¯ä»¥å¯¹pos 使ç¨ä¸ä¸ªè´å¼ã mysql> SELECT SUBSTRING('Quadratically',5); -> 'ratically' mysql> SELECT SUBSTRING('foobarbar' FROM 4); -> 'barbar' mysql> SELECT SUBSTRING('Quadratically',5,6); -> 'ratica' mysql> SELECT SUBSTRING('Sakila', -3); -> 'ila' mysql> SELECT SUBSTRING('Sakila', -5, 3); -> 'aki' mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2); -> 'ki' è¿ä¸ªå½æ°æ¯æå¤åèåå ã æ³¨æï¼å¦æå¯¹len使ç¨çæ¯ä¸ä¸ªå°äº1çå¼ï¼åç»æå§ç»ä¸ºç©ºå符串ã SUBSTR()æ¯ SUBSTRING()çåä¹è¯ã
å¨å®ç符 delim 以åcount åºç°åï¼ä»å符串strè¿åèªå符串ãè¥count为æ£å¼,åè¿åæç»å®ç符(ä»å·¦è¾¹å¼å§)左边çä¸åå 容ãè¥count为è´å¼ï¼åè¿åå®ç符ï¼ä»å³è¾¹å¼å§ï¼å³è¾¹çä¸åå 容ã mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2); -> 'www.mysql' mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2); -> 'mysql.com' è¿ä¸ªå½æ°æ¯æå¤åèåå ã
è¿åå符串 str ï¼ å ¶ä¸ææremstr åç¼å/æåç¼é½å·²è¢«å é¤ãè¥å类符BOTHãLEADINæTRAILING䏿²¡æä¸ä¸ªæ¯ç»å®ç,åå设为BOTH ã remstr 为å¯é项ï¼å¨æªæå®æ åµä¸ï¼å¯å é¤ç©ºæ ¼ã mysql> SELECT TRIM(' bar '); -> 'bar' mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx'); -> 'barxxx' mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx'); -> 'bar' mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz'); -> 'barx' è¿ä¸ªå½æ°æ¯æå¤åèåå ã
UCASE()æ¯UPPER()çåä¹è¯ã
对ç»COMPRESS()彿°å缩åçå符串è¿è¡è§£å缩ãè¥åæ°ä¸ºå缩å¼ï¼åç»æä¸º NULLãè¿ä¸ªå½æ°è¦æ± MySQL 已被诸å¦zlib ä¹ç±»çå缩åºç¼è¯è¿ãå¦å, è¿åå¼å°å§ç»æ¯ NULLã mysql> SELECT UNCOMPRESS(COMPRESS('any string')); -> 'any string' mysql> SELECT UNCOMPRESS('any string'); -> NULL
è¿åå缩å符串å缩åçé¿åº¦ã mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('a',30))); -> 30
æ§è¡ä»HEX(str)çååæä½ãå°±æ¯è¯´ï¼å®å°åæ°ä¸çæ¯ä¸å¯¹åå è¿å¶æ°åç解为ä¸ä¸ªæ°åï¼å¹¶å°å ¶è½¬å为该æ°å代表çå符ãç»æå符以äºè¿å¶å符串çå½¢å¼è¿åã mysql> SELECT UNHEX('4D7953514C'); -> 'MySQL' mysql> SELECT 0x4D7953514C; -> 'MySQL' mysql> SELECT UNHEX(HEX('string')); -> 'string' mysql> SELECT HEX(UNHEX('1267')); -> '1267'
è¿åå符串strï¼ ä»¥åæ ¹æ®ææ°åç¬¦éæ å°è½¬å为大å忝çå符 (é»è®¤ä¸ºcp1252 Latin1). mysql> SELECT UPPER('Hej'); -> 'HEJ' è¯¥å½æ°æ¯æå¤åèåå ã æ ¹æ®ï¼MySQL ä¼èªå¨å°æ°å转å为å符串ï¼åä¹äº¦ç¶ã mysql> SELECT 1+'1'; -> 2 mysql> SELECT CONCAT(2,' test'); -> '2 test' è¥æ³è¦å°æ°åæç¡®å°è½¬å为å符串ï¼å¯ä½¿ç¨ CAST()æ CONCAT()彿°ï¼ mysql> SELECT 38.8, CAST(38.8 AS CHAR); -> 38.8, '38.8' mysql> SELECT 38.8, CONCAT(38.8); -> 38.8, '38.8' CAST() æ¯è¾å¯åã. è¥å·²ç»å¯¹ä¸ä¸ªåç¬¦ä¸²å½æ°ç»å®ä¸ä¸ªäºè¿å¶å符串ä½ä¸ºåæ°ï¼ åæå¾å°çç»æåç¬¦ä¸²ä¹æ¯ä¸ä¸ªäºè¿å¶å符串ãä¸ä¸ªè½¬å为åç¬¦ä¸²çæ°å被ä½ä¸ºäºè¿å¶åç¬¦ä¸²å¯¹å¾ ãè¿ä» ä¼å¯¹æ¯è¾ç»æäº§çå½±åã ä¸è¬èè¨, è¥å符串æ¯è¾ä¸ä»»æä¸ä¸ªè¡¨è¾¾å¼æ¯åºå大å°åçï¼åæ§è¡æ¯è¾æ¶ä¹åºå大å°åã
模å¼å¹é ï¼ä½¿ç¨SQLç®åæ£è§è¡¨è¾¾å¼æ¯è¾ãè¿å1 (TRUE) æ 0 (FALSE)ã è¥ expr æ pat ä¸ä»»ä½ä¸ä¸ªä¸º NULL,åç»æä¸º NULLã æ¨¡å¼ä¸éè¦ä¸ºæåå符串ãä¾å¦ï¼å¯ä»¥è¢«æå®ä¸ºä¸ä¸ªåç¬¦ä¸²è¡¨è¾¾å¼æè¡¨åã 卿¨¡å¼ä¸å¯ä»¥åLIKEä¸èµ·ä½¿ç¨ä»¥ä¸ä¸¤ç§éé 符ï¼
mysql> SELECT 'David!' LIKE 'David_'; -> 1 mysql> SELECT 'David!' LIKE '%D%v%'; -> 1 è¥è¦å¯¹éé 符çæåå®ä¾è¿è¡æ£éª, å¯å°è½¬ä¹å符æ¾å¨è¯¥å符åé¢ãå¦ææ²¡ææå® ESCAPEå符, åå设为â\âã
mysql> SELECT 'David!' LIKE 'David\_'; -> 0 mysql> SELECT 'David_' LIKE 'David\_'; -> 1 è¦æå®ä¸ä¸ªä¸åç转ä¹å符,å¯ä½¿ç¨ESCAPEè¯å¥ï¼ mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|'; -> 1 转ä¹åºåå¯ä»¥ä¸ºç©ºï¼ä¹å¯ä»¥æ¯ä¸ä¸ªå符çé¿åº¦ã ä» MySQL 5.1.2å¼å§, å¦è¥ NO_BACKSLASH_ESCAPES SQL模å¼è¢«æ¿æ´», å该åºåä¸è½ä¸ºç©ºã 以ä¸ä¸¤ä¸ªè¯å¥ä¸¾ä¾è¯´æäºå符串æ¯è¾ä¸åºå大å°åï¼é¤éå ¶ä¸ä¸ä¸ªæä½æ°ä¸ºäºè¿å¶åç¬¦ä¸²ï¼ mysql> SELECT 'abc' LIKE 'ABC'; -> 1 mysql> SELECT 'abc' LIKE BINARY 'ABC'; -> 0 å¨MySQLä¸, LIKE å 许åºç°å¨æ°å表达å¼ä¸ã (è¿æ¯æ åSQL LIKE ç延伸ï¼ã mysql> SELECT 10 LIKE '1%'; -> 1 注éï¼ ç±äº MySQLå¨å符串ä¸ä½¿ç¨ C转ä¹è¯æ³(ä¾å¦, ç¨â\nâ代表ä¸ä¸ªæ¢è¡å符)ï¼å¨LIKEå符串ä¸ï¼å¿ é¡»å°ç¨å°çâ\âååãä¾å¦ï¼ è¥è¦æ¥æ¾ â\nâ, å¿ é¡»å°å ¶åæ â\\nâãèè¥è¦æ¥æ¾ â\â, åå¿ é¡»å°å ¶åæ it as â\\\\â;åå æ¯åæçº¿ç¬¦å·ä¼è¢«è¯æ³åæç¨åºå¥ç¦»ä¸æ¬¡ï¼å¨è¿è¡æ¨¡å¼å¹é æ¶ï¼åä¼è¢«å¥ç¦»ä¸æ¬¡ï¼æåä¼å©ä¸ä¸ä¸ªåæçº¿ç¬¦å·æ¥åå¹é ã
è¿ç¸å½äº NOT (expr LIKE pat [ESCAPE 'escape-char'])ã
è¿ç¸å½äºNOT (expr REGEXP pat)ã
æ§è¡åç¬¦ä¸²è¡¨è¾¾å¼ expr 忍¡å¼pat çæ¨¡å¼å¹é ã该模å¼å¯ä»¥è¢«å»¶ä¼¸ä¸ºæ£è§è¡¨è¾¾å¼ãæ£è§è¡¨è¾¾å¼çè¯æ³å¨éå½Gï¼MySQLæ£å表达å¼ä¸æè¯¦ç»è®¨è®ºãè¥expr å¹é patï¼åè¿å 1; å¦åè¿å0ãè¥ expr æ pat ä»»æä¸ä¸ªä¸º NULL, åç»æä¸º NULLã RLIKE æ¯REGEXPçåä¹è¯, ä½ç¨æ¯ä¸ºmSQL æä¾å ¼å®¹æ§ã 模å¼ä¸éè¦ä¸ºæåå符串ãä¾å¦,å¯ä»¥è¢«æå®ä¸ºä¸ä¸ªåç¬¦ä¸²è¡¨è¾¾å¼æè¡¨åã æ³¨éï¼ç±äºå¨å符串ä¸ï¼ MySQLä½¿ç¨ C 转ä¹è¯æ³ (ä¾å¦, ç¨â\nâæ¥ä»£è¡¨æ¢è¡å符 ),å¨REGEXPå符串ä¸å¿ é¡»å°ç¨å°çâ\â ååã REGEXP ä¸åºå大å°å, é¤éå°å ¶åäºè¿å¶åç¬¦ä¸²åæ¶ä½¿ç¨ã mysql> SELECT 'Monty!' REGEXP 'm%y%%'; -> 0 mysql> SELECT 'Monty!' REGEXP '.*'; -> 1 mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line'; -> 1 mysql> SELECT 'a' REGEXP 'A', 'a' REGEXP BINARY 'A'; -> 1 0 mysql> SELECT 'a' REGEXP '^[a-d]'; -> 1 å¨ç¡®å®åç¬¦ç±»åæ¶ï¼REGEXP å RLIKE 使ç¨å½åå符é (é»è®¤ä¸ºcp1252 Latin1 )ã è¦åï¼è¿äºæä½ç¬¦ä¸æ¯æå¤åèåå ã
è¥ææçå符串åç¸åï¼åè¿åSTRCMP()ï¼è¥æ ¹æ®å½åå类次åºï¼ç¬¬ä¸ä¸ªåæ°å°äºç¬¬äºä¸ªï¼åè¿å -1ï¼å ¶å®æ åµè¿å 1 ã mysql> SELECT STRCMP('text', 'text2'); -> -1 mysql> SELECT STRCMP('text2', 'text'); -> 1 mysql> SELECT STRCMP('text', 'text'); -> 0 卿§è¡æ¯è¾æ¶ï¼STRCMP() 使ç¨å½åå符éãè¿ä½¿å¾é»è®¤çæ¯è¾åºå大å°åï¼å½æä½æ°ä¸çä¸ä¸ªæä¸¤ä¸ªé½æ¯äºè¿å¶å符串æ¶é¤å¤ã å¯ä½¿ç¨å¸¸è§çç®æ¯æä½ç¬¦ã注æå°± -ã +å *èè¨, è¥ä¸¤ä¸ªåæ°åä¸ºæ£æ°ï¼åå ¶è®¡ç®ç»æç精确度为 BIGINT (64æ¯ç¹)ï¼è¥å ¶ä¸ä¸ä¸ªåæ°ä¸ºæ ç¬¦å·æ´æ°ï¼ èå ¶å®åæ°ä¹æ¯æ´æ°, åç»æä¸ºæ ç¬¦å·æ´æ°ã请åè§12.8èï¼âCast彿°åæä½ç¬¦âã
å å·: mysql> SELECT 3+5; -> 8
åå·: mysql> SELECT 3-5; -> -2
ä¸å åå·ãæ´æ¢åæ°ç¬¦å·ã mysql> SELECT - 2; -> -2 注æï¼è¥è¯¥ æä½ç¬¦åä¸ä¸ªBIGINTåæ¶ä½¿ç¨ï¼åè¿åå¼ä¹æ¯ä¸ä¸ªBIGINTãè¿æå³çä½ åºå½å°½éé¿å 对å¯è½äº§çâ263çæ´æ°ä½¿ç¨ âã
ä¹å·: mysql> SELECT 3*5; -> 15 mysql> SELECT 18014398509481984*18014398509481984.0; -> 324518553658426726783156020576256.0 mysql> SELECT 18014398509481984*18014398509481984; -> 0 æåä¸ä¸ªè¡¨è¾¾å¼çç»ææ¯ä¸æ£ç¡®çãåå æ¯æ´æ°ç¸ä¹çç»æè¶ è¿äºBIGINT 计ç®ç 64æ¯ç¹èå´ã (è§11.2èï¼âæ°å¼ç±»åâ.)
é¤å·: mysql> SELECT 3/5; -> 0.60 被é¶é¤çç»æä¸º NULLï¼ mysql> SELECT 102/(1-1); -> NULL åªæå½æ§è¡çè¯å¢ä¸ï¼å ¶ç»æè¦è¢«è½¬å为ä¸ä¸ªæ´æ°æ¶ ï¼é¤æ³æä¼å BIGINT ç®æ³ä¸èµ·ä½¿ç¨ã
æ´æ°é¤æ³ã ç±»ä¼¼äº FLOOR()ï¼ç¶è使ç¨BIGINT ç®æ³ä¹æ¯å¯é çã mysql> SELECT 5 DIV 2; -> 2 è¥åçéè¯¯ï¼æææ°å¦å½æ°ä¼è¿å NULL ã
è¿åX çç»å¯¹å¼ã mysql> SELECT ABS(2); -> 2 mysql> SELECT ABS(-32); -> 32 è¯¥å½æ°æ¯æä½¿ç¨BIGINTå¼ã
è¿åX åä½å¼¦, å³, ä½å¼¦æ¯Xçå¼ãè¥X ä¸å¨-1å° 1çèå´ä¹å ï¼åè¿å NULL ã mysql> SELECT ACOS(1); -> 0 mysql> SELECT ACOS(1.0001); -> NULL mysql> SELECT ACOS(0); -> 1.5707963267949
è¿åX ç忣弦ï¼å³ï¼æ£å¼¦ä¸ºX çå¼ãè¥X è¥X ä¸å¨-1å° 1çèå´ä¹å ï¼åè¿å NULL ã
mysql> SELECT ASIN(0.2); -> 0.20135792079033
mysql> SELECT ASIN('foo');
+-------------+
| ASIN('foo') |
+-------------+
| 0 |
+-------------+
1 row in set, 1 warning (0.00 sec)
mysql> SHOW WARNINGS; +---------+------+-----------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'foo' |
+---------+------+-----------------------------------------+
è¿åX ç忣åï¼å³ï¼æ£å为X çå¼ã mysql> SELECT ATAN(2); -> 1.1071487177941 mysql> SELECT ATAN(-2); -> -1.1071487177941
è¿å两个åéX åYç忣åã å®ç±»ä¼¼äº Y æ Xç忣å计ç®, é¤éä¸¤ä¸ªåæ°ç符å·åç¨äºç¡®å®ç»ææå¨è±¡éã mysql> SELECT ATAN(-2,2); -> -0.78539816339745 mysql> SELECT ATAN2(PI(),0); -> 1.5707963267949
è¿åä¸å°äºX çæå°æ´æ°å¼ã mysql> SELECT CEILING(1.23); -> 2 mysql> SELECT CEIL(-1.23); -> -1 è¿ä¸¤ä¸ªå½æ°çæä¹ç¸åãæ³¨æè¿åå¼ä¼è¢«è½¬å为ä¸ä¸ªBIGINTã
è¿åX çä½å¼¦ï¼å ¶ä¸Xå¨å¼§åº¦ä¸å·²ç¥ã mysql> SELECT COS(PI()); -> -1
è¿åX çä½åã mysql> SELECT COT(12); -> -1.5726734063977 mysql> SELECT COT(0); -> NULL
计ç®å¾ªç¯åä½ç æ ¡éªå¼å¹¶è¿åä¸ä¸ª 32æ¯ç¹æ 符å·å¼ãè¥åæ°ä¸ºNULL ï¼åç»æä¸º NULLãè¯¥åæ°åºä¸ºä¸ä¸ªå符串ï¼èä¸å¨ä¸æ¯åç¬¦ä¸²çæ åµä¸ä¼è¢«ä½ä¸ºå符串å¤çï¼è¥æå¯è½ï¼ã mysql> SELECT CRC32('MySQL'); -> 3259397556 mysql> SELECT CRC32('mysql'); -> 2501908538
è¿ååæ° X, è¯¥åæ°ç±å¼§åº¦è¢«è½¬å为度ã mysql> SELECT DEGREES(PI()); -> 180 mysql> SELECT DEGREES(PI() / 2); -> 90
è¿åeçX乿¹åçå¼(èªç¶å¯¹æ°çåº)ã mysql> SELECT EXP(2); -> 7.3890560989307 mysql> SELECT EXP(-2); -> 0.13533528323661 mysql> SELECT EXP(0); -> 1
è¿åä¸å¤§äºXçæå¤§æ´æ°å¼ ã mysql> SELECT FLOOR(1.23); -> 1 mysql> SELECT FLOOR(-1.23); -> -2 注æï¼è¿åå¼ä¼è¢«è½¬å为ä¸ä¸ª BIGINTã
å°æ°åX çæ ¼å¼åæ'#,###,###.##'æ ¼å¼, å³ä¿çå°æ°ç¹å Dä½ï¼è第Dä½çä¿çæ¹å¼ä¸ºåèäºå ¥ï¼ç¶åå°ç»æä»¥å符串çå½¢å¼è¿åã详è§12.9.4èï¼âå ¶ä»å½æ°âã
è¿åX çèªç¶å¯¹æ°,å³, X ç¸å¯¹äºåºæ°e ç对æ°ã mysql> SELECT LN(2); -> 0.69314718055995 mysql> SELECT LN(-2); -> NULL è¿ä¸ªå½æ°åLOG(X)å ·æç¸åæä¹ã
è¥ç¨ä¸ä¸ªåæ°è°ç¨ï¼è¿ä¸ªå½æ°å°±ä¼è¿åX çèªç¶å¯¹æ°ã mysql> SELECT LOG(2); -> 0.69314718055995 mysql> SELECT LOG(-2); -> NULL è¥ç¨ä¸¤ä¸ªåæ°è¿è¡è°ç¨ï¼è¿ä¸ªå½æ°ä¼è¿åX 对äºä»»æåºæ°B ç对æ°ã mysql> SELECT LOG(2,65536); -> 16 mysql> SELECT LOG(10,100); -> 2 LOG(B,X) å°±ç¸å½äº LOG(X) / LOG(B)ã
è¿åX çåºæ°ä¸º2ç对æ°ã mysql> SELECT LOG2(65536); -> 16 mysql> SELECT LOG2(-100); -> NULL å¯¹äºæ¥åºåå¨ä¸ä¸ªæ°åéè¦å¤å°ä¸ªæ¯ç¹ï¼LOG2()é常ææãè¿ä¸ªå½æ°ç¸å½äºè¡¨è¾¾å¼ LOG(X) / LOG(2)ã
è¿åXçåºæ°ä¸º10ç对æ°ã mysql> SELECT LOG10(2); -> 0.30102999566398 mysql> SELECT LOG10(100); -> 2 mysql> SELECT LOG10(-100); -> NULL LOG10(X)ç¸å½äºLOG(10,X)ã
模æä½ãè¿åN 被 Mé¤åç使°ã mysql> SELECT MOD(234, 10); -> 4 mysql> SELECT 253 % 7; -> 1 mysql> SELECT MOD(29,9); -> 2 mysql> SELECT 29 MOD 9; -> 2 è¿ä¸ªå½æ°æ¯æä½¿ç¨BIGINT å¼ã MOD() 对äºå¸¦æå°æ°é¨åçæ°å¼ä¹èµ·ä½ç¨ï¼ å®è¿å餿³è¿ç®åçç²¾ç¡®ä½æ°ï¼ mysql> SELECT MOD(34.5,3); -> 1.5
è¿å Ï (pi)çå¼ãé»è®¤çæ¾ç¤ºå°æ°ä½æ°æ¯7ä½,ç¶è MySQLå é¨ä¼ä½¿ç¨å®å ¨å精度å¼ã mysql> SELECT PI(); -> 3.141593 mysql> SELECT PI()+0.000000000000000000; -> 3.141592653589793116
è¿åX çY乿¹çç»æå¼ã mysql> SELECT POW(2,2); -> 4 mysql> SELECT POW(2,-2); -> 0.25
è¿åç±åº¦è½¬å为弧度çåæ° X, (注æ Ï å¼§åº¦çäº180度ï¼ã mysql> SELECT RADIANS(90); -> 1.5707963267949
è¿åä¸ä¸ªéæºæµ®ç¹å¼ v ï¼èå´å¨ 0 å°1 ä¹é´ (å³, å ¶èå´ä¸º 0 ⤠v ⤠1.0)ãè¥å·²æå®ä¸ä¸ªæ´æ°åæ° N ï¼åå®è¢«ç¨ä½ç§åå¼ï¼ç¨æ¥äº§çéå¤åºåã mysql> SELECT RAND(); -> 0.9233482386203 mysql> SELECT RAND(20); -> 0.15888261251047 mysql> SELECT RAND(20); -> 0.15888261251047 mysql> SELECT RAND(); -> 0.63553050033332 mysql> SELECT RAND(); -> 0.70100469486881 mysql> SELECT RAND(20); -> 0.15888261251047 è¥è¦å¨i ⤠R ⤠j è¿ä¸ªèå´å¾å°ä¸ä¸ªéæºæ´æ°R ï¼éè¦ç¨å°è¡¨è¾¾å¼ FLOOR(i + RAND() * (j â i + 1))ãä¾å¦ï¼ è¥è¦å¨7 å° 12 çèå´ï¼å æ¬7å12ï¼å å¾å°ä¸ä¸ªéæºæ´æ°, å¯ä½¿ç¨ä»¥ä¸è¯å¥ï¼ SELECT FLOOR(7 + (RAND() * 6)); å¨ORDER BYè¯å¥ä¸ï¼ä¸è½ä½¿ç¨ä¸ä¸ªå¸¦æRAND()å¼çåï¼åå æ¯ ORDER BY ä¼è®¡ç®åçå¤éæ¶é´ãç¶èï¼å¯æç §å¦ä¸çéæºé¡ºåºæ£ç´¢æ°æ®è¡ï¼ mysql> SELECT * FROM tbl_name ORDER BY RAND(); ORDER BY RAND()å LIMIT çç»åä»ä¸ç»åä¸éæ©éæºæ ·æ¬å¾æç¨ï¼ mysql> SELECT * FROM table1, table2 WHERE a=b AND c<d -> ORDER BY RAND() LIMIT 1000; 注æï¼å¨WHEREè¯å¥ä¸ï¼WHEREæ¯æ§è¡ä¸æ¬¡ï¼ RAND()å°±ä¼è¢«å计ç®ä¸æ¬¡ã RAND()çä½ç¨ä¸æ¯ä½ä¸ºä¸ä¸ªç²¾ç¡®çéæºåçå¨ï¼èæ¯ä¸ç§ç¨æ¥åçå¨åæ ·ç MySQLçæ¬çå¹³å°ä¹é´çå¯ç§»å¨ad hocéæºæ°çå¿«éæ¹å¼ã
è¿ååæ°X, å ¶å¼æ¥è¿äºæè¿ä¼¼çæ´æ°ãå¨æä¸¤ä¸ªåæ°çæ åµä¸ï¼è¿å X ï¼å ¶å¼ä¿çå°å°æ°ç¹åDä½ï¼è第Dä½çä¿çæ¹å¼ä¸ºåèäºå ¥ãè¥è¦æ¥ä¿çXå¼å°æ°ç¹å·¦è¾¹çD ä½ï¼å¯å° D 设为è´å¼ã mysql> SELECT ROUND(-1.23); -> -1 mysql> SELECT ROUND(-1.58); -> -2 mysql> SELECT ROUND(1.58); -> 2 mysql> SELECT ROUND(1.298, 1); -> 1.3 mysql> SELECT ROUND(1.298, 0); -> 1 mysql> SELECT ROUND(23.298, -1); -> 20 è¿åå¼çç±»åå 第ä¸ä¸ªèªåéç¸å(åè®¾å®æ¯ä¸ä¸ªæ´æ°ãåç²¾åº¦æ°æå°æ°)ãè¿æå³ç对äºä¸ä¸ªæ´æ°åæ°,ç»æä¹æ¯ä¸ä¸ªæ´æ°(æ å°æ°é¨å)ã å½ç¬¬ä¸ä¸ªåæ°æ¯åè¿å¶å¸¸æ°æ¶ï¼å¯¹äºåç¡®å¼åæ°ï¼ROUND() 使ç¨ç²¾å¯æ°å¦é¢åºï¼
以ä¸ä¸¾ä¾è¯´æèå ¥æ³å¯¹äºç²¾ç¡®å¼åè¿ä¼¼å¼çä¸åä¹å¤ï¼ mysql> SELECT ROUND(2.5), ROUND(25E-1); +------------+--------------+ | ROUND(2.5) | ROUND(25E-1) | +------------+--------------+ | 3 | 2 | +------------+--------------+ 详è§ç¬¬24ç« ï¼ç²¾åº¦æ°å¦ã
è¿ååæ°ä½ä¸º-1ã 0æ1ç符å·ï¼è¯¥ç¬¦å·åå³äºX çå¼ä¸ºè´ãé¶ææ£ã mysql> SELECT SIGN(-32); -> -1 mysql> SELECT SIGN(0); -> 0 mysql> SELECT SIGN(234); -> 1
è¿åX æ£å¼¦ï¼å ¶ä¸ X å¨å¼§åº¦ä¸è¢«ç»å®ã mysql> SELECT SIN(PI()); -> 1.2246063538224e-16 mysql> SELECT ROUND(SIN(PI())); -> 0
è¿åéè´æ°X çäºæ¬¡æ¹æ ¹ã mysql> SELECT SQRT(4); -> 2 mysql> SELECT SQRT(20); -> 4.4721359549996 mysql> SELECT SQRT(-16); -> NULL
è¿åX çæ£åï¼å ¶ä¸X å¨å¼§åº¦ä¸è¢«ç»å®ã mysql> SELECT TAN(PI()); -> -1.2246063538224e-16 mysql> SELECT TAN(PI()+1); -> 1.5574077246549
è¿å被èå»è³å°æ°ç¹åDä½çæ°åXãè¥D çå¼ä¸º 0, åç»æä¸å¸¦æå°æ°ç¹æä¸å¸¦æå°æ°é¨åãå¯ä»¥å°Dè®¾ä¸ºè´æ°,è¥è¦æªå»(å½é¶) Xå°æ°ç¹å·¦èµ·ç¬¬Dä½å¼å§å颿æä½ä½çå¼. mysql> SELECT TRUNCATE(1.223,1); -> 1.2 mysql> SELECT TRUNCATE(1.999,1); -> 1.9 mysql> SELECT TRUNCATE(1.999,0); -> 1 mysql> SELECT TRUNCATE(-1.999,1); -> -1.9 mysql> SELECT TRUNCATE(122,-2); -> 100 mysql> SELECT TRUNCATE(10.28*100,0); -> 1028 æææ°åçèå ¥æ¹å齿¥è¿äºé¶ã æ¬ç« 论述äºä¸äºå¯ç¨äºæä½æ¶é´å¼ç彿°ãå ³äºæ¯ä¸ªæ¶é´åæ¥æç±»åå ·æçå¼ååæå®å¼çæææ ¼å¼ï¼è¯·åè§11.3èï¼âæ¥æåæ¶é´ç±»åâã ä¸é¢çä¾å使ç¨äºæ¶é´å½æ°ã以ä¸è¯¢é®éæ©äºæè¿ç 30å¤©å ææå¸¦ædate_col å¼çè®°å½ï¼ mysql> SELECT something FROM tbl_name -> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col; 注æï¼è¿ä¸ªè¯¢é®ä¹è½éæ©å°æ¥çæ¥æè®°å½ã ç¨äºæ¥æå¼ç彿°é叏伿¥åæ¶é´æ¥æå¼èå¿½ç¥æ¶é´é¨åãèç¨äºæ¶é´å¼ç彿°é常æ¥åæ¶é´æ¥æå¼èå¿½ç¥æ¥æé¨åã è¿ååèªå½åæ¥æææ¶é´ç彿°å¨æ¯æ¬¡è¯¢é®æ§è¡å¼å§æ¶è®¡ç®ä¸æ¬¡ãè¿æå³çå¨ä¸ä¸ªåä¸è¯¢é®ä¸ï¼å¯¹è¯¸å¦NOW() ç彿°å¤æ¬¡è®¿é®æ»æ¯ä¼å¾å°åæ ·çç»æ(æªè¾¾å°æä»¬çç®çï¼åä¸è¯¢é®ä¹å æ¬å¯¹åå¨ç¨åºæè§¦åå¨å被该ç¨åº/触åå¨è°ç¨çææåç¨åºçè°ç¨ )ãè¿é¡¹ååä¹éç¨äº CURDATE()ã CURTIME()ã UTC_DATE()ã UTC_TIME()ãUTC_TIMESTAMP()ï¼ä»¥åææåå®ä»¬æä¹ç¸åç彿°ã CURRENT_TIMESTAMP()ã CURRENT_TIME()ã CURRENT_DATE()以åFROM_UNIXTIME()彿°è¿åè¿æ¥å½åæ¶åºå çå¼ï¼è¿ä¸ªå¼å¯ç¨ä½time_zoneç³»ç»åéçå¼ãæ¤å¤ï¼ UNIX_TIMESTAMP() åè®¾å ¶åæ°ä¸ºä¸ä¸ªå½åæ¶åºçæ¶é´æ¥æå¼ã请åè§5.10.8èï¼âMySQLæå¡å¨æ¶åºæ¯æâã 以ä¸å½æ°ç论述ä¸è¿åå¼çèå´ä¼è¯·æ±å®å ¨æ¥æã è¥ä¸ä¸ªæ¥æä¸ºâé¶â å¼ï¼æè æ¯ä¸ä¸ªè¯¸å¦'2001-11-00'ä¹ç±»çä¸å®å ¨æ¥æï¼ æåé¨åæ¥æå¼ç彿°å¯è½ä¼è¿å 0ã ä¾å¦ï¼ DAYOFMONTH('2001-11-00') ä¼è¿å0ã
å½è¢«ç¬¬äºä¸ªåæ°çINTERVALæ ¼å¼æ¿æ´»åï¼ ADDDATE()å°±æ¯DATE_ADD()çåä¹è¯ãç¸å ³å½æ°SUBDATE() 忝DATE_SUB()çåä¹è¯ã对äºINTERVALåæ°ä¸çä¿¡æ¯ ï¼è¯·åè§å ³äºDATE_ADD()ç论述ã mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY); -> '1998-02-02' mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY); -> '1998-02-02' è¥ days åæ°åªæ¯æ´æ°å¼ï¼å MySQL 5.1å°å ¶ä½ä¸ºå¤©æ°å¼æ·»å è³ exprã mysql> SELECT ADDDATE('1998-01-02', 31); -> '1998-02-02'
ADDTIME()å° expr2æ·»å è³expr ç¶åè¿åç»æã expr æ¯ä¸ä¸ªæ¶é´ææ¶é´æ¥æè¡¨è¾¾å¼ï¼èexpr2 æ¯ä¸ä¸ªæ¶é´è¡¨è¾¾å¼ã mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999', -> '1 1:1:1.000002'); -> '1998-01-02 01:01:01.000001' mysql> SELECT ADDTIME('01:00:00.999999', '02:00:00.999998'); -> '03:00:01.999997'
CONVERT_TZ() å°æ¶é´æ¥æå¼dt ä»from_tz ç»åºçæ¶åºè½¬å°to_tzç»åºçæ¶åºï¼ç¶åè¿åç»æå¼ãå ³äºå¯è½æå®çæ¶åºç详ç»è®ºè¿°ï¼è¯·åè§5.10.8èï¼âMySQLæå¡å¨æ¶åºæ¯æâãè¥èªåéæ æï¼åè¿ä¸ªå½æ°ä¼è¿å NULLã å¨ä»è¥from_tz å°UTCç转åè¿ç¨ä¸ï¼è¯¥å¼è¶ åº TIMESTAMP ç±»åçè¢«æ¯æèå´ï¼é£ä¹è½¬åä¸ä¼åçãå ³äº TIMESTAMP èå´ç论述ï¼è¯·åè§11.1.2èï¼âæ¥æåæ¶&ea | ||||||||||||||||||||||||||||||||||||||||