SQL Server 2005 모든 표 에서 지정 한 열 을 검색 하 는 방법
Select O.name objectName, C.name ColumnName from sys.columns C inner join sys.objects O ON C.object_id=O.object_id where C.name like '%ColumnName%'order by O.name, C.name
실제 테스트 에서 ColumnName 을 찾 으 려 는 열의 이름 으로 바 꾸 면 됩 니 다.
문자열 이 필드 에 있 을 때 검색 한 SQL 문 구 를 어떻게 씁 니까?
질문 설명:
이러한 문제 가 자주 발생 합 니 다.검색 조건 은 특정한 문자열 이 특정한 필드 에 포함 되 어 있 는 것 입 니 다.특정한 필드 가 특정한 문자열 에 포함 되 어 있다 면 in 을 사용 할 수 있다 는 것 을 알 고 있 습 니 다.
예 를 들 어 sql="select*form tb where tb.name in("&name&")"
설명:name 은 표 tb 의 필드 입 니 다.name 은 획득 한 문자열 입 니 다.이 검색 필드 name 은 주어진 문자열 names 의 모든 집합 입 니 다)
이런 방법 은 당연히 더 말 할 필요 가 없 지만,우리 가 흔히 만 나 는 문 제 는'거꾸로'이다.즉, "name"문자열 은 tb.name 표 필드 에 있 습 니 다.예 를 들 어 표 tb 의 name 필드 값 은 장 삼,이사,왕 오,조 육 입 니 다.
그리고 우리 가 조회 하고 자 하 는 name=장 3 은 표 의 name 필드 에 조회 조건 이 포함 되 어 있 는 지,즉'장 3'이 있 을 때 조회 에 부합 되 는 지 판단 해 야 합 니 다.
해결 방법:
1.가장 먼저 떠 오 르 는 것 은 당연히 like 조회(최종 해결 방안 이 아니 라 최종 방법 은 계속 아래 를 본다)
예 를 들 어 sql="select*form tb where tb.name like '%" & 장삼&'%'
설명 하 자 면 이 문 구 는 모든 표 의 name 필드 에'장 삼'의 집합 이 있 는 것 을 알 수 있 습 니 다.그러나 누군가가'진 장 삼 팔'이 라 고 가정 하면 그의 이름 은 부모 가 어떻게 지 었 든 지 간 에'장 삼'이라는 두 글자 도 있 습 니 다.그러면 조회 상황 에 부합 되 고 그 는 자 연 스 럽 게 조회 되 고 우 리 는'장 삼'만 있 으 면 됩 니 다."진장 삼 팔"말고 다음 단 계 를 보 세 요.
2.필드 의 값 이'장삼,이사,왕 오,조 육'이 아니 라'장삼,이사,왕 오,조 육'이 라면 생각해 보 세 요.
뭘 발 견 했 어?
예,문자열 앞 뒤에 쉼표 가 하나 더 있 으 면 유용 합 니 다.쉼표 는 제한 조건 으로 할 수 있 기 때 문 입 니 다.만약 에'진 장 삼 팔'이 이때 도 이 필드 에 있 으 면 그의 앞 뒤에 도 쉼표 가 있 습 니 다.이렇게 쉼표 에 따라 조 회 를 제어 하면 정확 한 위치 에 있 습 니 다.
자,다시 쓰기 검색:sql="select*form tb where tb.name" like '%," & 장삼&",%"
여기까지 원리 와 해결 방법 은 이미 모두 말 했 지만,당신 은 다음 과 같은 문제 에 부 딪 힐 수도 있 습 니 다.세 번 째 단 계 를 계속 보 세 요.
3.이러한 쉼표 가 있 는 필드 는 우리 가 저장 할 때 check 을 많이 선택 하여 얻 은 값 을 선택 한 경우 가 있 습 니 다.이때 데이터 베 이 스 를 기록 할 때 자동 으로 다른 check 값 에 쉼표 를 추가 합 니 다.
예 를 들 어 취 미 를 선택 하 세 요.'책 읽 기(value=1)','노래 듣 기(value=21)','등산(value=13)'을 선택 할 수 있 습 니 다.
이때 얻 은 값 은 xingquaihao="1,21,13"입 니 다.이 필드 를 데이터베이스 에 저장 하면 바로 이런 형식 입 니 다.그러나 이때 위의 조회 방식 으로 직접 조회 하면...
직접 사용:sql="select*form tb where xingquaihao like '%" & 1 & "%' ” 1 을 포함 한 모든 것 을 얻 게 될 것 이 며,21,13 중의 1 이라도 밝 혀 질 것 이다.
필드 앞 뒤 에 쉼표 를 붙 여',1,21,13'으로 바 꿀 때 21 또는 13 을 찾 으 면 sql='select*form tb where xingquaihao'로 바 꿉 니 다. like '%," & 21&',%'결 과 는 아무것도 알 아내 지 못 했다.
왜 가치 가 있 는데 도 알 아내 지 못 합 니까?
자동 으로 체크 한 다음 에 저 장 된 필드 중간 에 빈 칸 이 있 기 때 문 입 니 다.예 를 들 어'1,21,13',1 의 뒤 에는 쉼표 가 있 고 쉼표 뒤 에는 빈 칸 이 있 으 며 그 다음 에 21 입 니 다.
해결 방법 은 간단 합 니 다.체크 를 한 후 입고 하기 전에 빈 칸 을 제거 합 니 다.
xingquaihao="1, 21, 13"
xingquaihao=replace(xingquaihao,",")'빈 칸 삭제
이렇게 얻 은 것 은 바로 컴 팩 트 형의 값 입 니 다.다시 위의 방법 에 따라 조회 하여 해결 합 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
제1 6 장 파일 에서 텍스트 검색 도구: grep 명령 과 egrep 명령제1 6 장 파일 에서 텍스트 검색 도구: grep 명령 과 egrep 명령 옵션 grep 명령 파일 에서 단 어 를 검색 하면 명령 은 "match pattern"을 포함 하 는 텍스트 줄 을 되 돌려 줍 니 다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.