SQL修改角色名字限制
建立新的限制表CREATE TABLE illegal_character_names (partial_name varchar(30))建立新的函数
<span style="color: rgb(28, 31, 35); font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "SF Pro SC", "SF Pro Display", "SF Pro Icons", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: medium; white-space: pre; background-color: rgb(255, 255, 255);">CREATE FUNCTION dbo.check_valid_character_name (
@character_name NVARCHAR(40)
)
RETURNS TINYINT
AS
BEGIN
DECLARE @result TINYINT = 0;
DECLARE @char NVARCHAR(1);
DECLARE @i INT = 1;
-- 遍历每个字符,检查是否合法
WHILE @i <= LEN(@character_name)
BEGIN
SET @char = SUBSTRING(@character_name, @i, 1);
-- 检查是否为中文、英文、数字或允许的特殊符号
IF NOT (
-- 中文字符范围 (基本多文种平面)
UNICODE(@char) BETWEEN 0x4E00 AND 0x9FFF OR
-- 英文字母和数字
@char LIKE '' OR
-- 允许的特殊符号
@char LIKE ''
)
BEGIN
SET @result = 1;
BREAK;
END
SET @i = @i + 1;
END;
-- 检查是否在非法名称列表中
IF EXISTS (
SELECT 1
FROM dbo.illegal_character_names
WHERE @character_name LIKE '%' + partial_name + '%'
)
SET @result = 1;
RETURN @result;
END</span>
插入屏蔽的字符
-- 插入非法名称列表(明确列名并使用N前缀)
INSERT INTO dbo.illegal_character_names (partial_name) VALUES (N'%****%');
INSERT INTO dbo.illegal_character_names (partial_name) VALUES (N'%nigg%');
INSERT INTO dbo.illegal_character_names (partial_name) VALUES (N'%wank%');
INSERT INTO dbo.illegal_character_names (partial_name) VALUES (N'%whore%');
-- 示例:查询包含敏感词的角色名
SELECT *
FROM dbo.characters
WHERE EXISTS (
SELECT 1
FROM dbo.illegal_character_names
WHERE characters.name LIKE N'%' + illegal_character_names.partial_name + N'%'
);修改储存过程SP_CHAR_CREATE 里面数据
原始为:
EXEC sp_char_name_check @character_name, @v_ret OUTPUT
IF @v_ret < 0
BEGIN
SET @sp_rtn = @v_ret
RETURN
END修改为:
IF (dbo.NameBlock(@character_name) = 1)
BEGIN
SET @sp_rtn = -12
RETURN
END
页:
[1]