私はSQLサーバーにテーブルを持っており、私のテーブルにはname
のようなフィールドがあります。 この条件でテーブルからレコードを削除する必要があります。 すべての文字が最後の文字を除いて類似しており、最後の文字は、例えばテーブルのレコードについては「A」または「B」カスタム条件でテーブル内の同様のレコードを削除します
です....、name1a
、name2a
、name1b
あり とname1a
とname1b
私はSQLサーバーにテーブルを持っており、私のテーブルにはname
のようなフィールドがあります。 この条件でテーブルからレコードを削除する必要があります。 すべての文字が最後の文字を除いて類似しており、最後の文字は、例えばテーブルのレコードについては「A」または「B」カスタム条件でテーブル内の同様のレコードを削除します
です....、name1a
、name2a
、name1b
あり とname1a
とname1b
をあなたではなく、ワイルドカードを使用する方法よりも、テーブル内の重複を持っている任意の行(最後の文字が、すべてをマッチング)を削除する方法を求めている場合は、ここに方法です:
declare @names table (keycol int, namecol varchar(10))
insert into @names (keycol, namecol) values (1, 'name1a')
insert into @names (keycol, namecol) values (2, 'name1b')
insert into @names (keycol, namecol) values (3, 'name2a')
insert into @names (keycol, namecol) values (4, 'name2b')
insert into @names (keycol, namecol) values (5, 'name3a')
insert into @names (keycol, namecol) values (6, 'name4b')
;with dupenames as
(
select LEFT(namecol,LEN(namecol)-1) as NameMinusOne
from @names
group by LEFT(namecol,LEN(namecol)-1)
having count(*) > 1
)
delete from @names
from @names n
inner join dupenames dn on dn.NameMinusOne = LEFT(n.namecol,LEN(n.namecol)-1)
OUTPUT:
keycol namecol
----------- ----------
5 name3a
6 name4b
ワイルドカードを使用して特定の行を特定(および削除)する方法について質問していると思いますか?
declare @names table (keycol int, namecol varchar(10))
insert into @names (keycol, namecol) values (1, 'name1a')
insert into @names (keycol, namecol) values (2, 'name1b')
insert into @names (keycol, namecol) values (3, 'name2a')
insert into @names (keycol, namecol) values (4, 'name2b')
insert into @names (keycol, namecol) values (5, 'name3a')
insert into @names (keycol, namecol) values (6, 'name3b')
delete from @names where namecol like 'name1_'
がある場合は、次のSQL Serverでは
は、単一文字のワイルドカードは「_」あなたは「NAME1」を起動し、単一文字の接尾辞を持つ行を削除したい場合はこの種のものは動作するようです「NAME1」の部分の後にあなたが使用する複数の文字:
delete from @names where namecol like 'name1%'
が、これはワイルドカード質問ですか? – amelvin