当前位置:首页 » 存储配置 » 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解释器才会执行这段语句

热点内容
热度java 发布:2024-11-24 09:42:42 浏览:587
服务器搭建代理教程 发布:2024-11-24 09:36:20 浏览:444
svn存储服务器 发布:2024-11-24 09:22:36 浏览:410
linux的硬盘格式 发布:2024-11-24 09:22:35 浏览:320
启动ftp的命令是 发布:2024-11-24 09:12:33 浏览:601
脚本爬取数据 发布:2024-11-24 09:11:50 浏览:273
加密机制协议的是 发布:2024-11-24 09:11:47 浏览:826
易语言静态编译dll 发布:2024-11-24 09:11:43 浏览:583
cf游戏里最低配置怎么调 发布:2024-11-24 09:02:51 浏览:81
java排序算法效率 发布:2024-11-24 08:59:06 浏览:145