标签: replace

用空格替换列中的特殊字符

我正在尝试编写一个用空格替换特殊字符的查询。下面的代码有助于识别行。(字母数字字符、逗号和空格有效):

SELECT columnA
FROM tableA
WHERE columnA like '%[^a-Z0-9, ]%'
Run Code Online (Sandbox Code Playgroud)

如何将替换函数集成到 select 语句中,以便结果集中除字母数字、逗号和空格之外的所有字符都替换为 ' '(空格)。这个不行:

SELECT replace(columnA,'%[^a-Z0-9, ]%',' ')
FROM tableA
WHERE columnA like '%[^a-Z0-9, ]%'
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2008-r2 replace

10
推荐指数
2
解决办法
11万
查看次数

SQL Server:用通配符替换?

Microsoft SQL Server 本身是否支持replace使用通配符的某种功能?我认为正则表达式本身不可用。

我注意到有一个PATINDEX函数可以用来将一个解决方案组合在一起——有没有更简单的方法?

例如REPLACE(data,'[xy]','q'),以取代xyq

sql-server t-sql pattern-matching replace

10
推荐指数
1
解决办法
7万
查看次数

用一条语句更新表中的多行?

更新表中多行的最简单方法是什么?我有一个如下所示的 csv 文件:

|primary_key |value|
|          1 |  xyz|
|          2 |  abc|
|          3 |  def|
...
Run Code Online (Sandbox Code Playgroud)

目标表中已存在具有这些主键的行

我想用这些值更新目标表。是否有语法,以便我可以编写如下内容:

update mytable set value = ('xyz', 'abc', 'def') where primary key = (1,2,3);
Run Code Online (Sandbox Code Playgroud)

查看MySQL 更新参考、本站点(MySQL-csv 更新)、SO(更新多行多个数据库更新更新多行),我怀疑答案是“否”,但我想确认这一点是真的。

mysql update replace

9
推荐指数
1
解决办法
3万
查看次数

“LOAD DATA ... REPLACE INTO TABLE”相对于“UPDATE table_name SET”的优点

我继承了一个系统,其中对 MySQL 表的所有更新(甚至是单行/记录)都不是使用UPDATE table_name SET. 相反,它们是通过以下方式完成的:

  1. 将现有表导出到 CSV(文本)文件。
  2. 修改 CSV 文件中的相应行。
  3. 使用 重新加载 CSV 文件LOAD DATA ... REPLACE INTO TABLE

这是我第一次看到这种更新表记录的方法,我想知道这样做的理由是什么。

顺便说一句,由于更新时需要锁定 CSV 文件,该方案会导致许多线程同步问题。

LOAD DATA ... REPLACE INTO TABLE我希望得到关于使用而不是 的好处的解释或见解UPDATE table_name SET

mysql update replace csv

7
推荐指数
1
解决办法
1333
查看次数

如何替换字符串(文本列)中最后一次出现的字符?

假设我在 Postgres 中有一个具有此值的文本字段:

'bar$foo$john$doe$xxx'
Run Code Online (Sandbox Code Playgroud)

我想将最后一次出现的美元 ( $) 字符替换为另一个字符,例如“-”。替换后该字段的内容应为:

'bar$foo$john$doe-xxx'
Run Code Online (Sandbox Code Playgroud)

postgresql regular-expression replace

5
推荐指数
2
解决办法
1万
查看次数

查询以查找和替换 mysql 数据库的所有表和字段中的文本

我需要运行一个查询来查找和替换 mysql 数据库的所有表中的一些文本。

我找到了这个查询,但它只在 tbl_name 表和字段中查找文本。

update tbl_name set column=REPLACE(column, 'fuschia', 'fuchsia'); 
Run Code Online (Sandbox Code Playgroud)

我需要它来查看所有表和所有字段:(数据库中的任何地方)

mysql replace

3
推荐指数
1
解决办法
2万
查看次数

regexp_replace() 与 replace() 替换字符串中的所有匹配项

默认情况下,在 PostgreSQL 中,regexp_replace()替换字符串中第一次出现的子字符串,同时replace()替换字符串中所有出现的子字符串。为什么默认行为不同?

(我知道regexp_replace可以使用该g选项替换字符串中所有出现的子字符串。)

例子:

SELECT regexp_replace('hello world', 'o', 'z');  -- returns "hellz world"
SELECT regexp_replace('hello world', 'o', 'z', 'g'); -- returns "hellz wzrld"
SELECT replace('hello world', 'o', 'z'); -- returns: "hellz wzrld"
Run Code Online (Sandbox Code Playgroud)

postgresql pattern-matching replace

3
推荐指数
1
解决办法
2万
查看次数

Sql Server REPLACE 函数是否会增加估计的行大小?

分析一个简单的查询,我注意到 REPLACE 函数增加了估计的行大小。查看在 AdventureWorks 上执行的以下查询:

select p.BusinessEntityID, REPLACE(p.FirstName, 'a', 'b') as X
from Person.Person p
Run Code Online (Sandbox Code Playgroud)

以下是执行计划。仅应用与 REPLACE 函数相关的计算标量组件时,估计的行大小从 65 B 开始增加到 4015 B。谁能解释一下吗?

测试在Sql Server 2022上完成。

提前致谢。

在此输入图像描述

sql-server replace

3
推荐指数
1
解决办法
257
查看次数

SQL Server 过程,查找和替换大表中的数据

我需要编写一个存储过程来更新数据库中的链接引用。链接可以包含在几个包含 JSON 的 nvarchar 字段中(可能包含一些 url)。

为此,我每次迭代分批更新表 8129 个项目,这样机器就不会挂起(理论上)。

但现在代码似乎无论如何都挂起,它不会打印任何消息,并且程序继续运行(不影响任何数据)很多分钟,直到我必须终止该程序(同时似乎没有影响任何数据) 。

如果我尝试在玩具示例上使用相同的逻辑,我不会遇到任何问题,所以我认为我的问题是由于表很大(几十万行)这一事实造成的。

这里是一个正在运行的最小示例,更大的表上完全相同的代码显然没有执行任何操作(使用 SQL Server 2019 进行测试)。

程序代码:

ALTER PROCEDURE [dbo].[SiteUrlChangeURL]
    @FullOldUrl nvarchar(500),
    @FullNewUrl nvarchar(500)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    SET @FullOldUrl = ISNULL(@FullOldUrl,'');
    SET @FullNewUrl = ISNULL(@FullNewUrl,'');

    IF ( LEN(@FullOldUrl) <= 0 OR LEN(@FullNewUrl) <= 0 )
    BEGIN 
        PRINT('Invalid parameters');
        RETURN 1;
    END

    --ARTICLE
    RAISERROR ('updating articles',0,1) WITH NOWAIT;
    WHILE 1=1
    BEGIN
        UPDATE …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures t-sql replace

1
推荐指数
1
解决办法
270
查看次数

用值替换 NULL

这是我的临时表:

CREATE TABLE #test123(
    c1 float,
    c2 float,
    c3 float,
    c4 float,
    c5 float
);

INSERT #test123(c1,c2,c3,c4,c5)
VALUES (2,3,NULL,1,2),
       (2,NULL,NULL,1,2),
       (2,3,NULL,NULL,2),
       (NULL,3,NULL,1,NULL),
       (2,3,NULL,1,2);
Run Code Online (Sandbox Code Playgroud)

当我运行以下查询来替换第一列中的所有 NULL 时

INSERT INTO #test123 (c1) VALUES (ISNULL(c1,0));
Run Code Online (Sandbox Code Playgroud)

或者

INSERT INTO #test123 (c1) SELECT CASE WHEN c1 IS NULL THEN 0  END AS c1;
Run Code Online (Sandbox Code Playgroud)

我两次都收到错误“无效的列名 'c1'”。

的语法(来源INSERT INTO是:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...); 
Run Code Online (Sandbox Code Playgroud)

null sql-server insert replace isnull

-1
推荐指数
1
解决办法
53
查看次数