當前位置:首頁 » 存儲配置 » mysql存儲過程字元編碼

mysql存儲過程字元編碼

發布時間: 2024-10-05 12:05:48

Ⅰ Mysql和SQL Server存儲過程寫法上有什麼區別

一、多數指令是相同的,包括創建和修正存儲過程的指令。

二、很多細微的指令有不同,具體如下(不僅):

1 mysql支持enum,和set類型,sql server不支持。

2 mysql不支持nchar,nvarchar,ntext類型。

3 mysql的遞增語句是AUTO_INCREMENT,而mssql是identity(1,1)。

MYSQL:create table basic(id int key auto_increment,name varchar(20));

MSSQL: create table basic(id int identity(1,1) , name varchar(20))

4 msms默認到處表創建語句的默認值表示是((0)),而在mysql裡面是不允許帶兩括弧的。

5 mysql需要為表指定存儲類型。

6 mssql識別符是[],[type]表示他區別於關鍵字(可選用來包含表名、欄位名),但是mysql卻是 `(重音符,也就是按鍵1左邊的那個符號)。

7 mssql支持getdate()方法獲取當前時間日期,但是mysql裡面可以分日期類型和時間類型,獲取當前日期是cur_date(),當前完整時間是 now()函數。

8 mssql不支持replace into 語句,但是在最新的sql20008裡面,也支持merge語法。

Ⅱ MySQL怎麼寫存儲過程查詢某個表的某一條記錄,並把這條記錄的所有列名對應的值以json格式返回呢

給你個思路吧,既然你能問出這種問題應該是有了思路就會自己做的人,就不幫你寫代碼了。
首先,你確定這個表的所有欄位中沒有二進制內容,如果沒有的話,下面這個思路你可以試試,但是如果有的話估計就需要對二進制進行特別的處理了,如果你有的話再追問吧。
思路開始:
1.如果你是對一張確定的表(提前已經知道表結構)進行這樣的處理,那就查詢出來一條記錄,通過Mysql的字元串拼接函數CONCAT,按照JSON格式,慢慢的拼一個字元串,最後通過select這個字元串返回這個字元串就行了。
2.如果之前你並不知道,這個表的結構,甚至你根本不知道自己要處理的是那張表,那麼存儲過程中你需要傳遞一個表名進來,然後查詢information_schema資料庫中的COLUMNS表,從而獲得這個表的具體欄位信息,以及各個欄位的先後順序(為後面拼接字元串使用),剩下的就跟1中描述的思路一樣了。

雖然不知道你的用處是什麼,不過,以我個人的經驗,這種返回JSON的方式並不可取,這樣會增加資料庫的負擔,理論上應該是將數據出來後自己在程序中拼接。

Ⅲ Mysql 存儲過程,傳遞中文參數問題

應該是編碼問題。輸入
set names gbk;
這是使你輸入查詢取數據的傳輸的用的編碼。
不行的話可能你原先存的時候編碼就不對了。
所以就先drop你當前這資料庫,然後set names gbk; ,再建資料庫和表。再測試下應該就可以。

當然還要保證你的server client 底層存數據的默認編碼是utf8..至少要gbk,如果默認是latin1要改下。具體在配置文件my.ini里改 default-character-set=utf8 這個你可以搜索一下具體怎麼改

Ⅳ 為什麼MySQL的存儲過程的書寫這么麻煩DELIMITER 這種字元有什麼作用

其實就是告訴mysql解釋器,該段命令是否已經結束了,mysql是否可以執行了。
默認情況下,delimiter是分號;。在命令行客戶端中,如果有一行命令以分號結束,
那麼回車後,mysql將會執行該命令。如輸入下面的語句
mysql> select * from test_table;
然後回車,那麼MySQL將立即執行該語句。

但有時候,不希望MySQL這么做。在為可能輸入較多的語句,且語句中包含有分號。
如試圖在命令行客戶端中輸入如下語句
mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)
mysql> RETURNS varchar(255)
mysql> BEGIN
mysql> IF ISNULL(S) THEN
mysql> RETURN '';
mysql> ELSEIF N<15 THEN
mysql> RETURN LEFT(S, N);
mysql> ELSE
mysql> IF CHAR_LENGTH(S) <=N THEN
mysql> RETURN S;
mysql> ELSE
mysql> RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));
mysql> END IF;
mysql> END IF;
mysql> END;
默認情況下,不可能等到用戶把這些語句全部輸入完之後,再執行整段語句。
因為mysql一遇到分號,它就要自動執行。
即,在語句RETURN '';時,mysql解釋器就要執行了。
這種情況下,就需要事先把delimiter換成其它符號,如//或$$。
mysql> delimiter //
mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)
mysql> RETURNS varchar(255)
mysql> BEGIN
mysql> IF ISNULL(S) THEN
mysql> RETURN '';
mysql> ELSEIF N<15 THEN
mysql> RETURN LEFT(S, N);
mysql> ELSE
mysql> IF CHAR_LENGTH(S) <=N THEN
mysql> RETURN S;
mysql> ELSE
mysql> RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));
mysql> END IF;
mysql> END IF;
mysql> END;//
這樣只有當//出現之後,mysql解釋器才會執行這段語句

熱點內容
第一次安裝如何設置mysql密碼 發布:2025-01-12 12:09:02 瀏覽:280
如何刪除微信伺服器上收藏 發布:2025-01-12 12:08:20 瀏覽:102
吃雞游戲安卓區轉蘋果區怎麼轉 發布:2025-01-12 11:34:00 瀏覽:880
網頁版c語言 發布:2025-01-12 11:21:01 瀏覽:864
安卓怎麼更改排位常用英雄 發布:2025-01-12 11:10:33 瀏覽:561
拆遷的100萬如何配置 發布:2025-01-12 11:08:52 瀏覽:575
如何配置ph值為次氯酸鈉的ph值 發布:2025-01-12 11:08:52 瀏覽:437
pythonarraynumpy 發布:2025-01-12 11:01:47 瀏覽:293
酷我剪輯鈴聲文件夾 發布:2025-01-12 10:51:59 瀏覽:683
編譯原理龍書第9章 發布:2025-01-12 10:46:53 瀏覽:155