在文本字符串中搜索特定词 - SQL
Searching for specific words in a text string - SQL
我想知道是否有人可以帮助我。我知道我做错了什么并且使它过于复杂,但我不确定是什么。
我想从问题 205,227 和 278 中挑出当有人使用自闭症、ASD、阿斯伯格综合症等词来回答问题时的文字。
发生的事情是我只得到单个词的短语,而不是当有人在字符串中写下这个词时,例如'I have autism' 不会出现在输出中。只有当有人写自闭症时。我注意到它也区分大小写,我想知道是否可以对其进行编码,这样我就不必在每个大写和小写组合中写下所有单词。
我需要的主要是特定问题 (question.id) 以及能够在这些问题的回答中搜索特定单词和短语的出现 (texter_survey_response_value.value)。
select
texter_survey_response.response_id, question_id, conversation_id,
texter_survey_response_value.value as scrubbed_feedback
from
texter_survey_response
join texter_survey_response_value on texter_survey_response.response_id =
texter_survey_response_value.response_id
where
texter_survey_response_value.question_id IN (205, 227, 278)
and texter_survey_response_value.value = 'Autism'
or texter_survey_response_value.value = 'ASD'
or texter_survey_response_value.value = 'Autistic'
or texter_survey_response_value.value = 'Aspergers'
or texter_survey_response_value.value = 'Autism Spectrum'
or texter_survey_response_value.value = 'Autistic Spectrum Disorder'
or texter_survey_response_value.value = 'Autistic Spectrum'
or texter_survey_response_value.value = 'Autism Spectrum Disorder'
and texter_survey_response_value.value is not null
如果您使用=
,它只会搜索完全匹配。您可以通过在搜索短语的两边添加 %
来使用 like
实现包含搜索。您可以通过仅使用大写或小写来解决大多数 like
实现的区分大小写的性质。
select
texter_survey_response.response_id, question_id, conversation_id,
texter_survey_response_value.value as scrubbed_feedback
from
texter_survey_response join texter_survey_response_value
on texter_survey_response.response_id = texter_survey_response_value.response_id
where
texter_survey_response_value.question_id IN (205, 227, 278)
and texter_survey_response_value.value is not null
and (
UPPER(texter_survey_response_value.value) like '%AUTISM%' or
UPPER(texter_survey_response_value.value) like '%AUTISTIC%' or
UPPER(texter_survey_response_value.value) like '%ASPERGERS%' or
UPPER(texter_survey_response_value.value) like '%ASD%');
您没有写下您使用的数据库,因此您可能不得不调用与 UPPER
不同的过程。
希望这对您有所帮助:)
我想知道是否有人可以帮助我。我知道我做错了什么并且使它过于复杂,但我不确定是什么。
我想从问题 205,227 和 278 中挑出当有人使用自闭症、ASD、阿斯伯格综合症等词来回答问题时的文字。
发生的事情是我只得到单个词的短语,而不是当有人在字符串中写下这个词时,例如'I have autism' 不会出现在输出中。只有当有人写自闭症时。我注意到它也区分大小写,我想知道是否可以对其进行编码,这样我就不必在每个大写和小写组合中写下所有单词。
我需要的主要是特定问题 (question.id) 以及能够在这些问题的回答中搜索特定单词和短语的出现 (texter_survey_response_value.value)。
select
texter_survey_response.response_id, question_id, conversation_id,
texter_survey_response_value.value as scrubbed_feedback
from
texter_survey_response
join texter_survey_response_value on texter_survey_response.response_id =
texter_survey_response_value.response_id
where
texter_survey_response_value.question_id IN (205, 227, 278)
and texter_survey_response_value.value = 'Autism'
or texter_survey_response_value.value = 'ASD'
or texter_survey_response_value.value = 'Autistic'
or texter_survey_response_value.value = 'Aspergers'
or texter_survey_response_value.value = 'Autism Spectrum'
or texter_survey_response_value.value = 'Autistic Spectrum Disorder'
or texter_survey_response_value.value = 'Autistic Spectrum'
or texter_survey_response_value.value = 'Autism Spectrum Disorder'
and texter_survey_response_value.value is not null
如果您使用=
,它只会搜索完全匹配。您可以通过在搜索短语的两边添加 %
来使用 like
实现包含搜索。您可以通过仅使用大写或小写来解决大多数 like
实现的区分大小写的性质。
select
texter_survey_response.response_id, question_id, conversation_id,
texter_survey_response_value.value as scrubbed_feedback
from
texter_survey_response join texter_survey_response_value
on texter_survey_response.response_id = texter_survey_response_value.response_id
where
texter_survey_response_value.question_id IN (205, 227, 278)
and texter_survey_response_value.value is not null
and (
UPPER(texter_survey_response_value.value) like '%AUTISM%' or
UPPER(texter_survey_response_value.value) like '%AUTISTIC%' or
UPPER(texter_survey_response_value.value) like '%ASPERGERS%' or
UPPER(texter_survey_response_value.value) like '%ASD%');
您没有写下您使用的数据库,因此您可能不得不调用与 UPPER
不同的过程。
希望这对您有所帮助:)