sql 中的STR()

今天看了看STR的用法,用是很简单的,但是示例上有空格,还要有LTRIM()去掉

一直在想空格是那出来的,在网上找到了这个函数的说明

原来STR()的默认长度是10

想要没有空格就需要指定长度SELECT 'A'+STR(82,2)

 

 

SQL中STR()函数功能

declare @number smallint
set @number=2
select cast(replace(str(@number,3),' ','0') as char(3))

STR 函数 [字符串]
功能

返回一个数字的等效字符串。
语法

STR ( numeric_expression [, length [, decimal ] ] )
参数

numeric-expression    任何位于 -1E126 和 1E127 之间的近似数字(浮点、实数或双精度)表达式。

length    要返回的字符数(包括小数点、小数点右侧和左侧的所有位以及空白)。缺省值为 10。

decimal    要返回的小数位数。缺省值为 0。
用法

如果数字的整数部分超过了指定的长度,则返回具有指定长度但只包含星号的字符串。例如,下面的语句返回 ***
SELECT STR( 1234.56, 3 )
注意
所支持的最大长度为 128。任何不在 1 到 128 范围内的长度都会生成 NULL 结果。
标准和兼容性

### 如何在 SQL 中生成随机字符串 #### 使用 SQL Server 生成随机字符串 对于 SQL Server,可以创建一个名为 `F_RANDOM` 的自定义函数来实现这一功能。此方法通过构建一个视图 `v_random` 来间接调用 `RAND()` 函数[^1]。 ```sql IF OBJECT_ID('v_random', 'V') IS NOT NULL DROP VIEW v_random; GO CREATE VIEW v_random AS SELECT RAND() AS random_value; GO ``` 接着定义实际用于生成随机字符序列的函数: ```sql CREATE FUNCTION F_RANDOM (@length INT) RETURNS VARCHAR(MAX) AS BEGIN DECLARE @chars CHAR(62) = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; DECLARE @result VARCHAR(MAX) = ''; WHILE LEN(@result) < @length BEGIN SET @result += SUBSTRING( @chars, CAST((SELECT random_value FROM v_random) * LEN(@chars) + 1 AS INT), 1); END; RETURN @result; END; ``` 上述代码片段展示了如何利用辅助视图配合循环结构逐位拼接最终的结果串。 #### MySQL 实现方式 而在 MySQL 数据库环境中,则可以直接编写存储过程或函数而无需额外创建视图。下面是一个简单的例子说明怎样建立返回固定长度随机字母数字组合的功能[^2]。 ```sql USE test; SET GLOBAL log_bin_trust_function_creators = 1; DELIMITER $$ CREATE FUNCTION RS(N INT) RETURNS VARCHAR(1024) DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN DECLARE CHARS CHAR(62) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; DECLARE RES VARCHAR(1024) DEFAULT ''; DECLARE I INT DEFAULT 0; REPEAT SET I := I + 1; SET RES := CONCAT(RES, SUBSTRING(CHARS, FLOOR(1 + RAND() * LENGTH(CHARS)), 1)); UNTIL I >= N END REPEAT; RETURN RES; END$$ DELIMITER ; ``` 这段脚本首先设置了允许创建用户定义函数的安全设置,之后定义了一个接受整数参数并返回相应长度随机字符串的新函数 `RS`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值