2017-07-12 13 views
-1

から子音だけを選択:このテーブル内のすべての挿入でSQL Serverの私はテーブルを持っている名前

CREATE TABLE [PRODUCTS].[PRODUCERS](
[ID] [bigint] NOT NULL CONSTRAINT [id_producers] DEFAULT (NEXT VALUE FOR 
[producersID_SEQ]), 
[VAT_CODE] [varchar](255) NULL, 
[CODE] [varchar](45) NULL, 
[NAME] [varchar](45) NOT NULL, 
[NOTE] [varchar](255) NULL, 
[TFACTORY] [varchar](11) NULL DEFAULT ('@@'), 
[fitting_code] [varchar](3) NULL, 
CONSTRAINT [SQL160208104403390] PRIMARY KEY CLUSTERED 

を、コラム「フィッティングコード」の値が列の値から最初の3つの子音を選んで作成する必要があります"名前"

insert into products.PRODUCERS (fitting_code) select ... 

例:

Ponzio Pilato => PNZ 

答えて

1

は、文字列内の母音を削除関数を作成します。その後、戻り値から最初の3文字を取得します。機能はこのようにすべきです。

CREATE FUNCTION dbo.FN_REMOVEL_VOWELS (@STRING VARCHAR(max)) 
returns varchar(max) 
as 
begin 
RETURN REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@STRING, 'A', ''), 'E', ''), 'O', ''), 'U', ''), 'I', '') 
END 


SELECT DBO.FN_REMOVEL_VOWELS('INFORMATION SYSTEM') 

//これはNFRMTN SYSTM

を返します。それとも、母音のリストが異なる照合順序間で異なり、この

INSERT INTO products.PRODUCERS (NAME, fitting_code) 
VALUES(@NAME, SUBSTRING(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@NAME, 'A', ''), 'E', ''), 'O', ''), 'U', ''), 'I', ''), 1, 3)) 
+1

のようなSQLクエリでそれを行うことができます。 –

+0

どのアルファベットを使用しますか?それは一定ではありませんか? @RemusRusanu –

+1

文字列がトルコの照合列である場合はどうなりますか? 「ü」のようなさらに多くの文字については、http://www.i18nguy.com/unicode/turkish-i18n.html Dittoの問題に精通している必要があります。また、関数はNVARCHARではなくVARCHARであるため、文字自体に依存することさえできません。元の列の*照合*に依存します。 –

関連する問題