많은 영숫자가 아닌 문자를 포함 할 수있는 열 부품 #이 있습니다. 고객이나 공급 업체의 부품 번호를 데이터와 자주 비교해야합니다. 나는 alpha-Numeric만을 반환하는 사용자 정의 함수를 사용하여이 작업을 성공적으로 수행해 왔습니다. 인덱싱 된 뷰에서 stripPartNum이라는 계산 열을 만들어 성능을 향상 시켰습니다. 이 계산 된 열을 테이블로 이동하고 싶습니다.계산 된 열 또는 인덱싱 된 뷰?
계산 된 열을 지속 형으로 만들 수 없어 열에 인덱스를 만들 수 있습니다.
오류 : 'inventory'테이블의 계산 된 열 'stripPartNum'은 열이 비 결정적이므로 지속되지 않습니다.
patIndex를 사용하지 않는 새로운 사용자 정의 함수를 만들었지 만 여전히 동일한 문제가 있습니다.
Create FUNCTION [dbo].[anOnly]
(
@string VARCHAR(900)
)
RETURNS VARCHAR(900)
AS
BEGIN
Declare @pos int,@newString varchar(1000),@charAt char(1)
Set @pos = 0
Set @newString = ''
while @pos <= len(@string)
begin
Set @charAt = substring(@string,@pos,1)
if @charAt not like '[^0-9A-Za-z]'
Set @newString = @newString + @charAt
Set @pos = @pos + 1
end
return @newString
END
왜 내가보기에 계산 된 컬럼에 인덱스를 만들 수 있어요 아니라 테이블에 : 여기 함수인가? 내가 간과하고있는 해결책이 있습니까?
더 나은 질문은 왜이 사용자 정의 함수가 비 결정적입니까? – user1777129