SQLSERVER如何批次替换在列中不固定出现的第二个字符?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLSERVER如何批次替换在列中不固定出现的第二个字符?相关的知识,希望对你有一定的参考价值。

例如:A数据库有B表,C字段有如下值:
C
XXX金XX金XXX
XX金金金XXXX
XXXXXXXXXXXX 金金
XX金X金X金X金XXX
。。。。。
不管以上字段出现多少个金,我都只替换在该字段出现的第二个‘金’字,改成‘铜’
以达到如下效果:
C
XXX金XX铜XXX
XX金铜金XXXX
XXXXXXXXXXXX 金铜
XX金X铜X金X金XXX
。。。。。

请问如何写SQL语句批次替换,请高手指教!

先试一下这个(CCC和B表自己换一下)
select left(CCC, patindex('%金%金%',CCC))+ stuff(right(CCC,len(CCC)-patindex('%金%金%',CCC)),charindex('金',right(CCC,len(CCC)-patindex('%金%金%',CCC))),1,'铜') From B表 Where patindex('%金%金%',CCC)>0

如果能正常检索出结果,那就可以直接写
update B表 set CCC=(
left(CCC, patindex('%金%金%',CCC))+ stuff(right(CCC,len(CCC)-patindex('%金%
金%',CCC)),charindex('金',right(CCC,len(CCC)-patindex('%金%金%',CCC))),1,'铜
')) Where patindex('%金%金%',CCC)>0
参考技术A 不清楚追问

高手帮忙,很有挑战性

我希望搜索结果出现在列中,但只有文本出现

【中文标题】我希望搜索结果出现在列中,但只有文本出现【英文标题】:I want the search results to appear in columns, but only the text does 【发布时间】:2016-08-06 00:25:26 【问题描述】:

我有一个发布搜索结果的 WP 插件。这是php的结果:

<?php
/**
 * Search & Filter Pro 
 *
 * Sample Results Template
 * 
 * @package   Search_Filter
 * @author    Ross Morsali
 * @link      http://www.designsandcode.com/
 * @copyright 2015 Designs & Code
 * 
 * Note: these templates are not full page templates, rather 
 * just an encaspulation of the your results loop which should
 * be inserted in to other pages by using a shortcode - think 
 * of it as a template part
 * 
 * This template is an absolute base example showing you what
 * you can do, for more customisation see the WordPress docs 
 * and using template tags - 
 * 
 * http://codex.wordpress.org/Template_Tags
 *
 */


if ( $query->have_posts() )


    ?>

    Found <?php echo $query->found_posts; ?> Results<br />
    Page <?php echo $query->query['paged']; ?> of <?php echo $query->max_num_pages; ?><br />


    <div class="pagination">

        <div class="nav-previous"><?php next_posts_link( 'Older posts', $query->max_num_pages ); ?></div>
        <div class="nav-next"><?php previous_posts_link( 'Newer posts' ); ?></div>
        <?php
            /* example code for using the wp_pagenavi plugin */
            if (function_exists('wp_pagenavi'))
            
                echo "<br />";
                wp_pagenavi( array( 'query' => $query ) );
            
        ?>
    </div>

    <?php
    while ($query->have_posts())
    
        $query->the_post();

        ?>

<div>
            <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            <?php 
                if ( has_post_thumbnail() ) 
                    echo '<p>';
                    the_post_thumbnail("small");
                    echo '</p>';
                
            ?>
            <p><br /><?php the_excerpt(); ?><p>
</div>

        <?php
    
    ?>
    Page <?php echo $query->query['paged']; ?> of <?php echo $query->max_num_pages; ?><br />

    <div class="pagination">

        <div class="nav-previous"><?php next_posts_link( 'Older posts', $query->max_num_pages ); ?></div>
        <div class="nav-next"><?php previous_posts_link( 'Newer posts' ); ?></div>
        <?php
            /* example code for using the wp_pagenavi plugin */
            if (function_exists('wp_pagenavi'))
            
                echo "<br />";
                wp_pagenavi( array( 'query' => $query ) );
            
        ?>
    </div>
    <?php

else

    echo "No Results Found";


?>

现在我希望结果(帖子)出现在 2 列中,但是,当我尝试这样做时:

<div class="container">
    <div class="row">
        <div class="col-md-2">
            <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            <?php 
                if ( has_post_thumbnail() ) 
                    echo '<p>';
                    the_post_thumbnail("small");
                    echo '</p>';
                
            ?>
            <p><br /><?php the_excerpt(); ?><p>
</div>
</div>
</div>

我可以看到文本 (p) 出现在列中,但不是结果。

我究竟如何实现我的目标?

【问题讨论】:

由于某种原因它没有保存我的编辑。我已经编辑了它,原始答案中的第二段代码是错误的。 这是我得到的结果:prntscr.com/as53eg 我希望帖子结果本身排列成列,而不是文本。 另外,由于某种原因,它甚至只在一篇文章的文本上放置了列,而不是所有文章:prntscr.com/as53xu 【参考方案1】:

有几个错误。 首先col-md-2 在 12 列布局中创建 2 列宽的 div。所以这是六分之一,而不是一半。应该是col-md-6

接下来的问题是为每个帖子添加一个容器、行和列。但是你应该只有 1 个容器和 1 行。对于每个帖子,您应该将列设为 div。

<!-- 1 container and row -->
<div class="container">
<div class="row">    
<?php
  while ($query->have_posts())
    $query->the_post();
?>
    <!-- a six column wide div for each post -->
    <div class="col-md-6">
      <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
      <?php 
        if ( has_post_thumbnail() ) 
          echo '<p>';
            the_post_thumbnail("small");
          echo '</p>';
        
      ?>
      <p><br /><?php the_excerpt(); ?><p>
  </div>

<?php
  
?>
</div>
</div>

【讨论】:

做到了!感谢您的帮助。

以上是关于SQLSERVER如何批次替换在列中不固定出现的第二个字符?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 在列中搜索文本

如何计算某些值在 SQL 表中出现的次数并在列中返回该数字?

R - 在列中查找模式并替换它(更有效的解决方案)

计算不同单词在列中出现的次数 Oracle 12c SQL

PySpark:如何在列中使用 Or 进行分组

如何计算某个meta_key在列中出现的meta_value的次数?