mysql有函数编程_mysql函数-mysql,系统函数

本教程分享:《mysql函数》,

mysql 自定义函数 如何传入中文参数

函数dropfunctionifexiststest1;CREATEFUNCTIONtest1(str1VARCHAR(200),str2VARCHAR(200))RETURNSVARCHAR(200)CHARSETutf8BEGINRETURNCONCAT(str1,str2);END;sql:selecttest1('我是',...

函数

drop function if exists test1;

CREATE FUNCTION test1(

str1 VARCHAR(200),

str2 VARCHAR(200)

) RETURNS VARCHAR (200) CHARSET utf8

BEGIN

RETURN CONCAT(str1,str2);

END;

sql:

select test1('我是','中文');

报错:

[SQL]select test1('我是','中文');

[Err] 1366 - Incorrect string value: '\xE6\x88\x91\xE6\x98\xAF' for column 'str1' at row 342

输入非中文是可以得到结果,输入中文就会报错,求大神解答

是数据库字符编码问题,改成utf8就可以了

貌似不会关闭问题,随便来个人 送分了

展开

CREATE FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8

BEGIN

DECLARE V_RETURN VARCHAR(255);

SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME USING gbk),1)),16,10),

0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,

0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,

0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1),

'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z');

RETURN V_RETURN;

END

pinyin :此函数是将一个中文字符串对应拼音母的每个相连 (例如:"中国人"->ZGR)

复制代码 代码如下:

CREATE FUNCTION `pinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8

BEGIN

DECLARE V_COMPARE VARCHAR(255);

DECLARE V_RETURN VARCHAR(255);

DECLARE I INT;

SET I = 1;

SET V_RETURN = '';

while I 

SET V_COMPARE = SUBSTR(P_NAME, I, 1);

IF (V_COMPARE != '') THEN

#SET V_RETURN = CONCAT(V_RETURN, ',', V_COMPARE);

SET V_RETURN = CONCAT(V_RETURN, fristPinyin(V_COMPARE));

#SET V_RETURN = fristPinyin(V_COMPARE);

END IF;

SET I = I + 1;

end while;

IF (ISNULL(V_RETURN) or V_RETURN = '') THEN

SET V_RETURN = P_NAME;

END IF;

RETURN V_RETURN;

END

示例:

复制代码 代码如下:

mysql> select p.province, fristPinyin(p.province), pinyin(p.province) from province p;

+------------------+-------------------------+--------------------+

| province         | fristPinyin(p.province) | pinyin(p.province) |

+------------------+-------------------------+--------------------+

| 北京市           | B                       | BJS                |

| 天津市           | T                       | TJS                |

| 河北省           | H                       | HBS                |

| 山西省           | S                       | SXS                |

| 内蒙古自治区     | N                       | NMGZZQ             |

+------------------+-------------------------+--------------------+

5 rows in set

在mysql中自定义的函数怎么调用

调用如:select 函数名(参数列表)。

mysql中的UDF(自定义函数),可以写好一些方法或 函数,然后进行调用,而且是在SQL语句中可以进行调用。

DROP FUNCTION CalculateAmount

CREATE FUNCTION CalculateAmount(userid INT) RETURNS float(10,2)

BEGIN

DECLARE totalCredits FLOAT;

SELECT SUM(amount) INTO totalAmount FROM credit_user WHERE id =userid;

RETURN totalAmount;

END

要注意的是,在UDF中,不要定义与数据表中重名的列。而在SQL中, 则可以像SELECT CalculateAmount(1);那样去调用了。

mysql中常用的聚合函数有哪些?

最常用最常用的也就avg()算平均值,sum()求和,count()算数量,min()最小值和max()找最大值这几个

mysql自定义函数

写一个函数,接收一个字符串(字符串由英文字母和分隔符(空格 , .三种)组成),

由单个或连续多个分隔符隔开的字母串视为一个单词。函数返回该字符串的单词数量

调用如:select 函数名(参数列表)。 mysql中的UDF(自定义函数),可以写好一些方法或 函数,然后进行调用,而且是在SQL语句中可以进行调用。 DROP FUNCTION CalculateAmount CREATE FUNCTION CalculateAmount(userid INT) RETURNS float(10,2) BEGIN DECLARE totalCredits FLOAT; SELECT SUM(amount) INTO totalAmount FROM credit_user WHERE id =userid; RETURN totalAmount; END 要注意的是,在UDF中,不要定义与数据表中重名的列。而在SQL中, 则可以像SELECT CalculateAmount(1);那样去调用了。

追问

我学mysql没几天,这道题我想了几个小时了一直不知该如何下手,麻烦您写的简单点或直接写出答案。谢谢

怎么使用mysql个生成4位随机数的自定义函数

怎么使用mysql个生成4位随机数的自定义函数啊..

我没用过mySQL写函数啊..头都大了。..急..求帮忙啊..

要求还不重复..

select round(round(rand(),4)*10000);

不用函数直接这样就好了。

非得写函数的话,就

DELIMITER $$

CREATE

FUNCTION get_rand()

RETURNS INT DETERMINISTIC

BEGIN

DECLARE return_no INT;

SELECT ROUND(ROUND(RAND(),4)*10000) INTO return_no;

RETURN return_no;

END$$

DELIMITER ;

mysql存储过程函数怎么运行

call sp_add();

是不是你定义的过程有问题吧,并没有指出返回结果来

像我这样是可以的:

CREATE PROCEDURE sp_add(a int, b int,out c int)

begin

set c=a+ b;

end;

调用过程:

call sp_add (1,2,@a);

select @a;

mysql函数为什么需要禁用

主要介绍如下几个方面的设置:

1.load data infile

?View Code MYSQL

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'

[REPLACE | IGNORE]

INTO TABLE tbl_name

[FIELDS

[TERMINATED BY 'string']

[[OPTIONALLY] ENCLOSED BY 'char']

[ESCAPED BY 'char' ]

]

[LINES

[STARTING BY 'string']

[TERMINATED BY 'string']

]

[IGNORE number LINES]

[(col_name_or_user_var,...)]

[SET col_name = expr,...)]

LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并装入一个表中。

这是一个很危险的内置函数,所以一般建议禁用掉(除非程序有用到本地文件)

通过在my.cnf中设置

1

local-infile=0|1 0表示禁用,1表示开启

2.load_file函数

这个函数和上面的load data 函数类似,都是读取本地文件,对于load_file(filename)函数的使用有如下的条件限制:

读取文件并将这一文件按照字符串的格式返回。 文件的位置必须在服务器上,你必须为文件制定路径全名,而且你还必须拥有FILE 特许权。文件必须可读取,文件容量必须小于 max_allowed_packet字节。

若文件不存在,或因不满足上述条件而不能被读取, 则函数返回值为 NULL。

这个主要通过mysql授权来禁用这个函数,收回用户的file权限

1

revoke file on *.* from 'user'@'IP'; //或者不要授予用户的file权限

3.禁用drop命令

1

revoke drop on *.* from 'user'@'IP';

mysql中die函数的问题

$con=mysql_pconnect("59.151.12.43","kxt_db_users","userfor1234%")ordie("Couldnotconnect:".mysql_error());后半句中的die函数每个参数啥意思,中间的英文句号干吗用的。他的返回...

$con = mysql_pconnect("59.151.12.43", "kxt_db_users","userfor1234%")

or die("Could not connect: " . mysql_error());

后半句中的die函数每个参数啥意思,中间的英文句号干吗用的。他的返回值是什么。

or前面的pconnect函数我知道。要详细点

展开

$con = mysql_pconnect("59.151.12.43", "kxt_db_users","userfor1234%")

or die("Could not connect: " . mysql_error());

这句话的意思是连接mysql,如果连接失败,就中止后面代码的运行并给出相应的错误信息.

die()里面就一个参数,就是输出的字符串,英文逗号是连接两个字符串的,"Could not connect"和mysql_error()。mysql_error()返回mysql的错误信息。

$errMsg="Could not connect: " . mysql_error();

$con = mysql_pconnect("59.151.12.43", "kxt_db_users","userfor1234%") or die($errMsg);

这样是不是清楚一点?

追问

谢谢 我就是不明白关系运算符 or 和 字符串链接的运算符 . 的作用,这回明白了

mysql中convert()函数是什么意思?

mysql中convert()函数的意思是用来把一个数据类型的值转换为另一个数据类型。

其他函数:

ASCII(s)

作用: 返回字符串 s 的第一个字符的 ASCII 码。

CHAR_LENGTH(s)

作用: 返回字符串 s 的字符数。

CHARACTER_LENGTH(s)

作用: 返回字符串 s 的字符数。

CONCAT(s1,s2...sn)    作用: 字符串 s1,s2 等多个字符串合并为一个字符串   。

CONCAT_WS(x, s1,s2...sn)    作用: 同 CONCAT(s1,s2,...) 函数,但是每个字符串之间要加上 x,x 可以是分隔符  。

FIELD(s,s1,s2...)   作用: 返回第一个字符串 s 在字符串列表(s1,s2...)中的位置  。

扩展资料:

MySQL 中文排序错误的解决方法

方法1

在 MySQL 数据库中,进行中文排序和查找的时候,对汉字的排序和查找结果是错误的。这种情况在 MySQL 的很多版本中都存在。如果这个问题不解决,那么 MySQL 将无法实际处理中文。

出现这个问题的原因是:MySQL

在查询字符串时是大小写不敏感的,在编绎 MySQL 时一般以 ISO-8859

字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,一种解决方法是对于包含中文的字段加上 "binary"

属性,使之作为二进制比较,

例如将 "name char(10)" 改成 "name char(10)binary"。

方法2

如果你使用源码编译 MySQL,可以编译 MySQL 时使用 --with--charset=gbk 参数,这样 MySQL 就会直接支持中文查找和排序了。

参考资料来源:百度百科-mySQL

mysql有to char函数吗

mysql没有to_char函数。

oracle中to_char的作用是将日期型和数值型 转换为字符类

date_format(date,'%Y-%m-%d %T')

把括号里面的date更换就行了,这个是转数值型的,日期型是:

str_to_date('2017-05-01 23:59:59','%Y-%m-%d %T')

至于%Y %m 是什么意思,你自己到网上找吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值