最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入mysql創(chuàng)建自定義函數(shù)與存儲(chǔ)過程的詳解

 更新時(shí)間:2013年06月10日 09:36:22   作者:  
本篇文章是對(duì)mysql創(chuàng)建自定義函數(shù)與存儲(chǔ)過程進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

一 創(chuàng)建自定義函數(shù)
在使用mysql的過程中,mysql自帶的函數(shù)可能不能完成我們的業(yè)務(wù)需求,這時(shí)就需要自定義函數(shù),例如筆者在開發(fā)過程中遇到下面這個(gè)問題:
mysql表結(jié)構(gòu)如下

復(fù)制代碼 代碼如下:

DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `pic` varchar(50) NOT NULL,
  `hashcode` varchar(16) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of test
-- ----------------------------
INSERT INTO `test` VALUES ('1', '2012120910403250c3fa209bf48.jpg', 'bf8f83818080c0f1');
INSERT INTO `test` VALUES ('2', '2012120620430750c092db26557.JPG', 'ff9880f0f680ceff');
INSERT INTO `test` VALUES ('3', '2012120619582550c08861eb062.jpg', '7f7f004f7f7f7c7f');
INSERT INTO `test` VALUES ('4', '2012112911072650b6d16e7f21f.jpg', '7f7f004f7f7f007f');


其中pic字段為圖片名稱,hashcode是圖片的感知哈希編碼(16進(jìn)制編碼字符串,長(zhǎng)度固定16位),用戶輸入一個(gè)hashcode,怎么從數(shù)據(jù)庫(kù)中找出滿足字符串對(duì)應(yīng)位置的字符不同的個(gè)數(shù)小于5的記錄呢?就像“11001”和“11101”對(duì)應(yīng)位置不同字符不同的個(gè)數(shù)為1,比如 用戶輸入"7f7f004f7f7f00af",那么第三條和第四條記錄是滿足的,怎么實(shí)現(xiàn)呢?如果單純的依靠mysql自帶的函數(shù)很難完成,這時(shí)就需要建立自定義函數(shù)解決。這個(gè)問題的解決在此非常感謝csdn的acmain_chm,acmain_chm以及oschina的@梁小剛,還有@淘寶丁奇

建立自定義函數(shù)的過程如下:
1.進(jìn)入mysql命令行
mysql>
2.用delimiter命令來把語句定界符從 ;變?yōu)?/。這樣就允許在程序體用;定界符傳遞到服務(wù)器,而不是被mysql自己來解釋。
mysql> delimiter //
3.創(chuàng)建自定義函數(shù)

復(fù)制代碼 代碼如下:

mysql>CREATE FUNCTION hashDiff( s1 varchar(16), s2 varchar(16))
->RETURNS INT
->BEGIN
->DECLARE diff, x INT;
->SET diff =0;
->SET x = 0;
->WHILE (x  < 16 )  DO
->SET x = x+1;
->if SUBSTRING(s1, x,1)<>SUBSTRING(s2, x,1) then
->set diff=diff+ 1;
->end if;
->END WHILE;
->RETURN diff;
->END
->//
mysql>select * from test t where  hashDiff(t.hashcode,'ff9880f0f680ceff')  < 5;

二 創(chuàng)建存儲(chǔ)過程
1.進(jìn)入mysql命令行
mysql>
2.用delimiter命令來把語句定界符從 ;變?yōu)?/。這樣就允許在程序體用;定界符傳遞到服務(wù)器,而不是被mysql自己來解釋。
mysql> delimiter //
3.創(chuàng)建存儲(chǔ)過程
復(fù)制代碼 代碼如下:

mysql> delimiter //
mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
    -> BEGIN
    ->   SELECT COUNT(*) INTO param1 FROM t;
    -> END
    -> //
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;
mysql> CALL simpleproc(@a);
Query OK, 0 rows affected (0.00 sec)


mysql> SELECT @a;
+------+
| @a   |
+------+
| 3    |
+------+
1 row in set (0.00 sec)


相關(guān)文章

  • MySQL修改密碼的四種方式詳解

    MySQL修改密碼的四種方式詳解

    文章介紹了4種修改MySQL密碼的方法,包括使用setpassword命令、mysqladmin命令、修改user表以及忘記密碼時(shí)的處理步驟,感興趣的朋友一起看看吧
    2025-03-03
  • MySQL中安裝樣本數(shù)據(jù)庫(kù)Sakila過程分享

    MySQL中安裝樣本數(shù)據(jù)庫(kù)Sakila過程分享

    這篇文章主要介紹了MySQL中安裝樣本數(shù)據(jù)庫(kù)Sakila過程分享,Sakila數(shù)據(jù)庫(kù)主要用來做一些基本的操作以及壓力測(cè)試等,需要的朋友可以參考下
    2014-10-10
  • mysql如何刪除數(shù)據(jù)表和關(guān)聯(lián)的數(shù)據(jù)表刪除詳情

    mysql如何刪除數(shù)據(jù)表和關(guān)聯(lián)的數(shù)據(jù)表刪除詳情

    這篇文章主要介紹了mysql如何刪除數(shù)據(jù)表和關(guān)聯(lián)的數(shù)據(jù)表刪除詳情,刪除數(shù)據(jù)表的時(shí)候,表的定義和表中所有的數(shù)據(jù)均會(huì)被刪除。因此,在進(jìn)行刪除操作前,最好對(duì)表中的數(shù)據(jù)做一個(gè)備份,以免造成無法挽回的后果
    2022-07-07
  • 簡(jiǎn)單了解MySQL SELECT執(zhí)行順序

    簡(jiǎn)單了解MySQL SELECT執(zhí)行順序

    MySQL數(shù)據(jù)據(jù)庫(kù)中我們經(jīng)常使用SQL SELECT語句來查詢數(shù)據(jù),那么關(guān)于它的執(zhí)行順序,下面小編來帶大家簡(jiǎn)單了解一下
    2019-05-05
  • SELECT?*?效率低原理解析

    SELECT?*?效率低原理解析

    這篇文章主要為大家介紹了SELECT?*?效率低原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • mysql添加備注信息的實(shí)現(xiàn)

    mysql添加備注信息的實(shí)現(xiàn)

    這篇文章主要介紹了mysql添加備注信息的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • MySQL中關(guān)于null值的一個(gè)小問題

    MySQL中關(guān)于null值的一個(gè)小問題

    這篇文章主要介紹了MySQL中關(guān)于null值的一個(gè)小問題,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-03-03
  • Mysql如何刪除數(shù)據(jù)庫(kù)表中的某一列

    Mysql如何刪除數(shù)據(jù)庫(kù)表中的某一列

    這篇文章主要介紹了Mysql如何刪除數(shù)據(jù)庫(kù)表中的某一列,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • mysql 循環(huán)批量插入的實(shí)例代碼詳解

    mysql 循環(huán)批量插入的實(shí)例代碼詳解

    本文通過實(shí)例代碼文字相結(jié)合的形式給大家介紹了mysql 循環(huán)批量插入功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • MySQL做讀寫分離提高性能緩解數(shù)據(jù)庫(kù)壓力

    MySQL做讀寫分離提高性能緩解數(shù)據(jù)庫(kù)壓力

    這篇文章主要為大家介紹了MySQL做讀寫分離提高性能緩解數(shù)據(jù)庫(kù)壓力的技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評(píng)論

江津市| 海兴县| 陈巴尔虎旗| 高青县| 新化县| 惠水县| 灵丘县| 南康市| 丰宁| 九寨沟县| 房产| 积石山| 新闻| 遵义县| 沙坪坝区| 本溪市| 三原县| 灵宝市| 山阴县| 天水市| 台山市| 垦利县| 普兰店市| 浑源县| 岳阳市| 子洲县| 海南省| 许昌县| 祁连县| 虹口区| 铜川市| 钟山县| 子长县| 鄂伦春自治旗| 普定县| 印江| 扶沟县| 资源县| 黄陵县| 思南县| 浦县|