쿼리에 문자열을 입력하고 해당 문자열의 모든 순열을 데이터베이스에서 검색하고 일치 항목을 표시하는 OpenOffice에서 db를 사용하여 쿼리를 만들려고합니다. 내 데이터베이스에는 단어와 정의에 대한 필드가 있으므로 GOOD을 찾고 있다면 DOG에 대한 정의와 정의를 가져올 것입니다.SQL 쿼리 - 문자열 순열
답변
기본적으로 단일 SQL 문에서 순열을 쉽게 수행 할 수 없습니다. 하지만 다른 언어로 쉽게 할 수 있습니다. 예를 들어 C#에서 수행하는 방법을 예로들 수 있습니다. http://msdn.microsoft.com/en-us/magazine/cc163513.aspx
세 번째 열도 필요합니다. 이 열에는 단어가 있지만 알파벳 순서로 정렬 된 문자가 있습니다. 예를 들어 APPLE이라는 단어가 있고 다음 열에 AELPP라는 단어가 있습니다. 당신은 당신이 찾고있는 단어를 정렬 할 것 -이 같은 얻을 것,
단어 사과에 대한 WHERE sorted_words = 'my_sorted_word'
같은 일부 SQL 코드를 실행 : 이제
unsorted sorted
AELPP APPLE
AELPP PEPLA
AELPP APPEL
을, 당신은 또한 원 - 내가 틀렸다면 나에게 맞는 말을해라. 그러나 글자의 조합 **으로 만들 수있는 모든 단어를 원한다. APPLE은 또한 LEAP와 PEA와 같은 단어를 반환한다.
이렇게하려면, 당신은 어떤 프로그래밍 언어를 사용하는 것이다 - 당신이
- ELLP
- ALLP이 AELLP 단어를 위해 - 당신이 예를 들어, 위의 재귀 적으로 미리 형성하는 함수를 작성해야
- AELP 등등 ..
O (마다 .. 요법 가능한 모든 조합하여 두 개의 문자 조합마다 하나 개의 문자를 감산 한) k, 모든 상황을 처리한다고 생각되는 수정 된 버전. 이것은 MS SQL Server에서 작동하므로 로컬 테이블과 REPLICATE 함수를 사용하는 한 RDBMS에 맞게 조정해야합니다. @search_string이라는 전달 된 매개 변수를 가정합니다. 또한 NVARCHAR 대신 VARCHAR를 사용하므로 확장 문자를 사용하는 경우이를 변경해야합니다.
내가 지금 막 생각하고있는 마지막 요점은 ... 편지의 중복을 허용 할 것입니다. 예를 들어 "GOOD"에 단 하나의 "D"가 있더라도 "GOOD"은 "DODO"를 찾습니다. 그것은 원래 단어보다 더 큰 길이의 단어를 찾지 못할 것입니다. 즉, "DODO"를 찾을 수는 있지만 "DODODO"를 찾지는 못합니다. 어쩌면 이것은 당신의 정확한 요구 사항에 따라 일할 수있는 출발점이 될 것입니다.
DECLARE @search_table TABLE (search_string VARCHAR(4000))
DECLARE @i INT
SET @i = 1
WHILE (@i <= LEN(@search_string))
BEGIN
INSERT INTO @search_table (search_string)
VALUES (REPLICATE('[' + @search_string + ']', @i)
SET @i = @i + 1
END
SELECT
word,
definition
FROM
My_Words
INNER JOIN @search_table ST ON W.word LIKE ST.search_string
내 편집하기 전에 원래 쿼리, 그냥 여기있을 수 있습니다 :
SELECT
word,
definition
FROM
My_Words
WHERE
word LIKE REPLICATE('[' + @search_string + ']', LEN(@search_string))
는 정수 번호와 보조 번호 테이블이 있다고 가정.
DECLARE @s VARCHAR(5);
SET @s = 'ABCDE';
WITH Subsets AS (
SELECT CAST(SUBSTRING(@s, Number, 1) AS VARCHAR(5)) AS Token,
CAST('.'+CAST(Number AS CHAR(1))+'.' AS VARCHAR(11)) AS Permutation,
CAST(1 AS INT) AS Iteration
FROM dbo.Numbers WHERE Number BETWEEN 1 AND 5
UNION ALL
SELECT CAST(Token+SUBSTRING(@s, Number, 1) AS VARCHAR(5)) AS Token,
CAST(Permutation+CAST(Number AS CHAR(1))+'.' AS VARCHAR(11)) AS
Permutation,
s.Iteration + 1 AS Iteration
FROM Subsets s JOIN dbo.Numbers n ON s.Permutation NOT LIKE
'%.'+CAST(Number AS CHAR(1))+'.%' AND s.Iteration < 5 AND Number
BETWEEN 1 AND 5
--AND s.Iteration = (SELECT MAX(Iteration) FROM Subsets)
)
SELECT * FROM Subsets
WHERE Iteration = 5
ORDER BY Permutation
Token Permutation Iteration
----- ----------- -----------
ABCDE .1.2.3.4.5. 5
ABCED .1.2.3.5.4. 5
ABDCE .1.2.4.3.5. 5
(snip)
EDBCA .5.4.2.3.1. 5
EDCAB .5.4.3.1.2. 5
EDCBA .5.4.3.2.1. 5
(120 row(s) affected)
- 1. 오라클 - 문자열 조합 순열
- 2. 고정 길이의 문자열 순열
- 3. 문자열 순열 만들기
- 4. 문자열 sql 쿼리
- 5. SQL 서버 문자열 쿼리
- 6. SQL 명령의 쿼리 문자열 C#
- 7. SQL 서버 문자열 조작 쿼리
- 8. Sql 문자열 연산의 쿼리 성능?
- 9. SQL 쿼리 결과가 문자열 (또는 변수)
- 10. 빌드 SQL 쿼리 문자열 사용자 입력
- 11. SQL 인젝션 필터 URL 쿼리 문자열 - PHP
- 12. 가능한 모든 순열 생성하기
- 13. 쿼리 문자열?
- 14. 파이썬에서 단어 조합하기 (순열?)
- 15. 순열 생성
- 16. 재귀 순열
- 17. 엑셀의 순열
- 18. 순열 문제
- 19. C++ 순열
- 20. PHP 아포스트로피 및 쿼리 문자열
- 21. SQL 추출 부분 문자열
- 22. SQL 서버에있는 sql 쿼리
- 23. SQL 서버 SQL 쿼리
- 24. 안드로이드 SQL 쿼리 문제
- 25. JQuery와 쿼리 문자열 통과
- 26. 쿼리 문자열 텍스트 암호화
- 27. 리디렉션 전체 쿼리 문자열
- 28. 동적 쿼리 문자열
- 29. 제거 URL 쿼리 문자열
- 30. Lucene 문자열 쿼리