sql 正则替换空格 空白 不起作用
时间: 2023-05-20 10:06:24 浏览: 65
可以尝试使用以下 SQL 语句进行正则替换空格和空白:
UPDATE table_name SET column_name = REGEXP_REPLACE(column_name, '[[:space:]]+', '');
其中,table_name 是表名,column_name 是需要进行替换的列名。这个语句使用了 REGEXP_REPLACE 函数,它可以将符合正则表达式的字符串替换为指定的字符串。在这个例子中,正则表达式 '[[:space:]]+' 匹配一个或多个空格或空白字符,并将其替换为空字符串。
相关问题
sql server 正则替换
在SQL Server中,可以使用 REPLACE 函数进行字符串替换,但是它不支持正则表达式。如果你需要使用正则表达式进行替换,可以使用 CLR 函数或扩展存储过程来实现。
以下是使用 CLR 函数进行正则替换的示例:
1. 创建一个 SQL Server 项目
2. 在项目中添加一个新的类,将以下代码复制到类中并编译:
```csharp
using System;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Text.RegularExpressions;
public class RegExFunctions
{
[SqlFunction(DataAccess = DataAccessKind.None, IsDeterministic = true)]
public static SqlString RegexReplace(SqlString input, SqlString pattern, SqlString replacement)
{
if (input.IsNull || pattern.IsNull || replacement.IsNull)
{
return SqlString.Null;
}
try
{
string result = Regex.Replace(input.Value, pattern.Value, replacement.Value);
return new SqlString(result);
}
catch (Exception)
{
return SqlString.Null;
}
}
}
```
3. 将生成的 DLL 文件添加到 SQL Server 中,可以使用以下命令:
```sql
CREATE ASSEMBLY RegExFunctions FROM 'path\to\RegExFunctions.dll' WITH PERMISSION_SET = SAFE;
```
4. 创建一个扩展存储过程,将以下代码复制到存储过程中:
```sql
CREATE PROCEDURE RegexReplace
@input NVARCHAR(MAX),
@pattern NVARCHAR(MAX),
@replacement NVARCHAR(MAX)
AS EXTERNAL NAME RegExFunctions.[RegExFunctions].RegexReplace;
```
5. 现在你可以在 SQL Server 中使用 `RegexReplace` 存储过程进行正则替换,例如:
```sql
SELECT dbo.RegexReplace('Hello world', '\s', '-');
-- Output: Hello-world
```
在这个例子中,`RegexReplace` 存储过程接受三个参数:输入字符串、正则表达式模式和替换字符串。它使用 CLR 函数 `RegexReplace` 来执行实际的替换操作。
hivesql正则匹配数字替换字符串
您可以使用 Hive 中的 REGEXP_REPLACE 函数来进行正则匹配并替换字符串中的数字。具体实现可以参考以下 HiveQL 语句:
```
SELECT REGEXP_REPLACE('abc123def456', '\\d+', 'X') AS result
```
以上语句将字符串 'abc123def456' 中的数字全部替换为字符 'X',输出结果为 'abcXdefX'。
如果您需要对 Hive 表中的某一列进行替换操作,可以使用类似以下语句:
```
SELECT REGEXP_REPLACE(col_name, '\\d+', 'X') AS new_col_name
FROM your_table
```
其中 col_name 是需要进行替换操作的列名,new_col_name 是替换后的新列名,your_table 是您要操作的表名。