2

これを行うために何と呼ばれるかわからないので、それをたくさん検索する方法が正確にはわかりません。

これがデータベースの例です。

 name     id     code
 bob      1      Aa Bb cc DD ee
 sue      3      aa Bb Cc Dd Ee
 tom      8      AA BB cc dd EE

「C」グループと「D」グループの間に「F」グループを追加できるようにしたい。したがって、次のようになります。

 name     id     code
 bob      1      Aa Bb cc ff DD ee
 sue      3      aa Bb Cc ff Dd Ee
 tom      8      AA BB cc ff dd EE

これをどのように行うことができるかについてのアイデアはありますか?

4

4 に答える 4

2

SQLServer 2005+では、STUFF関数を使用します

SELECT name, id, STUFF(code, 9, 1, ' ff ') AS Code
FROM your_table
于 2012-12-23T18:14:56.297 に答える
1

これを行うための標準化された方法はないと思いますが、多くのデータベースには、テーブル列に対して正規表現操作を行う方法があります。たとえば、PostgreSQLでは、次のように実行できます。

UPDATE table
SET code = regex_replace(code, '(.. .. ..) (.. ..)', E'\\1 ff \\2', '');

(注:このコードは、この回答これらのドキュメントを基に作成されていますが、私は自分でテストしていないため、エラーが発生する可能性があります)

于 2012-12-23T03:29:22.130 に答える
1
update mytable set code = replace(code, "cc DD", "cc ff DD") -- where is optional;

ccとddのキャピタライゼーションの他のバリエーション(全部で16のバリエーション)の更新:

update mytable set code = replace(code, "Cc DD", "Cc ff DD") -- where is optional;
update mytable set code = replace(code, "CC DD", "CC ff DD") -- where is optional;
update mytable set code = replace(code, "cC DD", "cC ff DD") -- where is optional;
-- etc
于 2012-12-23T03:19:54.650 に答える
1

列の長さが固定されているため、大文字と小文字のバリエーションを検索する必要はありません。キャラクターの位置を利用して、必要なものを手に入れることができます。関数を使用left()して、最初の8文字を抽出し、最後の5文字を​​抽出して、2つの間に「ff」right()を挟みます。

これはSQLServerで行ったことに注意してください。同等の機能は、他のDBに簡単に実装できます。

UPDATE yourTable
set code = left(code,8)+' ff ' + right(code,5)

出力

Aa Bb cc ff DD ee
aa Bb Cc ff Dd Ee
AA BB cc ff dd EE
于 2012-12-23T07:21:11.210 に答える